vintage-frames 0.6.0 → 0.6.2
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 +1035 -24
- package/dist/components/vf-dialog.d.ts +9 -0
- package/dist/components/vf-number-field.js +1 -1
- package/dist/components/vf-scroll-area.js +9 -1
- package/dist/components/vf-text-field.d.ts +2 -1
- package/dist/components/vf-text-field.js +1 -1
- package/dist/components/vf-window.d.ts +20 -0
- package/dist/components/vf-window.js +43 -3
- package/dist/modal-dialog.d.ts +33 -0
- package/dist/modal-dialog.js +66 -36
- package/dist/position.d.ts +27 -8
- package/dist/position.js +74 -18
- package/dist/text-control.d.ts +8 -1
- package/dist/text-control.js +2 -7
- package/docs/SPEC.md +9 -8
- package/editor/vscode.html-custom-data.json +157 -2
- package/editor/web-types.json +317 -3
- package/package.json +1 -1
package/editor/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"name": "vintage-frames",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.2",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
@@ -30,6 +30,11 @@
|
|
|
30
30
|
"name": "left",
|
|
31
31
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
32
32
|
"value": { "type": "number | null | undefined" }
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "fixed",
|
|
36
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
37
|
+
"value": { "type": "boolean", "default": "false" }
|
|
33
38
|
}
|
|
34
39
|
],
|
|
35
40
|
"slots": [
|
|
@@ -58,6 +63,11 @@
|
|
|
58
63
|
"name": "left",
|
|
59
64
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
60
65
|
"type": "number | null | undefined"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "fixed",
|
|
69
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
70
|
+
"type": "boolean"
|
|
61
71
|
}
|
|
62
72
|
],
|
|
63
73
|
"events": []
|
|
@@ -126,6 +136,11 @@
|
|
|
126
136
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
127
137
|
"value": { "type": "number | null | undefined" }
|
|
128
138
|
},
|
|
139
|
+
{
|
|
140
|
+
"name": "fixed",
|
|
141
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
142
|
+
"value": { "type": "boolean", "default": "false" }
|
|
143
|
+
},
|
|
129
144
|
{
|
|
130
145
|
"name": "description",
|
|
131
146
|
"description": "Description for the control — hint text, a format, a unit. A host-level\n`aria-describedby` cannot reach a focusable element inside a shadow root,\nso there was structurally no way to describe a field; this property is\nthat channel. It renders as a hidden span in the control's own shadow root\nwith the inner control's `aria-describedby` pointing at it — the\nshadow-internal IDREF idiom `vf-dialog`'s title patch already uses. A\nhost-level `aria-describedby` is bridged into the same span when this\nproperty is empty, and a failing constraint's validationMessage\njoins it too, so AT hears the error where it hears the hint.\n\nHost-role controls get neither half: their `aria-describedby` already\nworks, and their validation message reaches AT the way a native control's\ndoes — `aria-invalid` plus the browser's own validation UI, not AccName.",
|
|
@@ -201,6 +216,11 @@
|
|
|
201
216
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
202
217
|
"type": "number | null | undefined"
|
|
203
218
|
},
|
|
219
|
+
{
|
|
220
|
+
"name": "fixed",
|
|
221
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
222
|
+
"type": "boolean"
|
|
223
|
+
},
|
|
204
224
|
{
|
|
205
225
|
"name": "description",
|
|
206
226
|
"description": "Description for the control — hint text, a format, a unit. A host-level\n`aria-describedby` cannot reach a focusable element inside a shadow root,\nso there was structurally no way to describe a field; this property is\nthat channel. It renders as a hidden span in the control's own shadow root\nwith the inner control's `aria-describedby` pointing at it — the\nshadow-internal IDREF idiom `vf-dialog`'s title patch already uses. A\nhost-level `aria-describedby` is bridged into the same span when this\nproperty is empty, and a failing constraint's validationMessage\njoins it too, so AT hears the error where it hears the hint.\n\nHost-role controls get neither half: their `aria-describedby` already\nworks, and their validation message reaches AT the way a native control's\ndoes — `aria-invalid` plus the browser's own validation UI, not AccName.",
|
|
@@ -270,6 +290,11 @@
|
|
|
270
290
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
271
291
|
"value": { "type": "number | null | undefined" }
|
|
272
292
|
},
|
|
293
|
+
{
|
|
294
|
+
"name": "fixed",
|
|
295
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
296
|
+
"value": { "type": "boolean", "default": "false" }
|
|
297
|
+
},
|
|
273
298
|
{
|
|
274
299
|
"name": "disabled",
|
|
275
300
|
"description": "Disables the control: it stops responding and submits no value. Each\ncontrol dims per SPEC §1 (typically the label greys while the 1-bit chrome\nstays black).",
|
|
@@ -329,6 +354,11 @@
|
|
|
329
354
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
330
355
|
"type": "number | null | undefined"
|
|
331
356
|
},
|
|
357
|
+
{
|
|
358
|
+
"name": "fixed",
|
|
359
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
360
|
+
"type": "boolean"
|
|
361
|
+
},
|
|
332
362
|
{
|
|
333
363
|
"name": "disabled",
|
|
334
364
|
"description": "Disables the control: it stops responding and submits no value. Each\ncontrol dims per SPEC §1 (typically the label greys while the 1-bit chrome\nstays black).",
|
|
@@ -410,6 +440,11 @@
|
|
|
410
440
|
"name": "left",
|
|
411
441
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
412
442
|
"value": { "type": "number | null | undefined" }
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"name": "fixed",
|
|
446
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
447
|
+
"value": { "type": "boolean", "default": "false" }
|
|
413
448
|
}
|
|
414
449
|
],
|
|
415
450
|
"slots": [
|
|
@@ -450,6 +485,11 @@
|
|
|
450
485
|
"name": "left",
|
|
451
486
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
452
487
|
"type": "number | null | undefined"
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
"name": "fixed",
|
|
491
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
492
|
+
"type": "boolean"
|
|
453
493
|
}
|
|
454
494
|
],
|
|
455
495
|
"events": []
|
|
@@ -492,6 +532,11 @@
|
|
|
492
532
|
"name": "left",
|
|
493
533
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
494
534
|
"value": { "type": "number | null | undefined" }
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
"name": "fixed",
|
|
538
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
539
|
+
"value": { "type": "boolean", "default": "false" }
|
|
495
540
|
}
|
|
496
541
|
],
|
|
497
542
|
"slots": [
|
|
@@ -542,6 +587,11 @@
|
|
|
542
587
|
"name": "left",
|
|
543
588
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
544
589
|
"type": "number | null | undefined"
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
"name": "fixed",
|
|
593
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
594
|
+
"type": "boolean"
|
|
545
595
|
}
|
|
546
596
|
],
|
|
547
597
|
"events": [
|
|
@@ -554,7 +604,7 @@
|
|
|
554
604
|
},
|
|
555
605
|
{
|
|
556
606
|
"name": "vf-dialog",
|
|
557
|
-
"description": "`<vf-dialog>` — the System 7 modal dialog shell.\n\nTwo chromes, one modal lifecycle (native `<dialog>` for top-layer rendering\nand focus trapping, with a fully transparent backdrop — no dimming). Both\nare the same dBoxProc double frame — 1px outer rule, 2px gap, 2px inner\nband, no shadow (vfModalFrame):\n\n- **Default:** the movable modal (movableDBoxProc) — the striped title bar\n set into the top of that frame, with a centered title over a white body.\n Drag the title bar to move it. `closable` adds the standard close box\n (left of the bar) — the HIG's own figures disagree on whether a movable\n modal carries one (Figure 5-1 says yes, Figure 6-1 and the Chapter 6 text\n say no), so the component enables either reading rather than enforcing\n one.\n- **`frame=\"plain\"`:** the modal dialog box — the bare frame, no title bar —\n and immovable, like the original. A `heading` renders as a centered\n display-face heading at the top of the body (the reference art's \"Dialog\n title\"); `closable` is ignored, there being no bar to carry the widget.\n\nOpen it with `show()` (or set the `open` attribute/property); close with\n`close()`. Escape closes it and fires `vf-close` with\n`{ reason: 'escape' }`; the close box and programmatic closing fire\n`{ reason: 'close' }`. With `light-dismiss`, a click outside the frame\ncloses it too, with `{ reason: 'outside' }` — for the About box; off by\ndefault, since the classic modal ignored an outside click.\n---\n\n\n### **Events:**\n - **vf-close** - Dialog closed. Detail `{ reason: 'escape' | 'close' | 'outside' }` — `'outside'` only under `light-dismiss`.\n\n### **Slots:**\n - _default_ - Default slot: dialog body content.\n- **buttons** - Optional action buttons. Rendered as a bottom-right `vf-button-group` (equal-width, faces aligned); the footer only takes space when the slot is populated.\n\n### **CSS Properties:**\n - **--vf-dots-pattern** - the windoid bar's dot-grid dither — a 2×2 tile, one black pixel at the origin (`vfDots`; override the whole pattern like `--vf-desktop-pattern`) _(default: undefined)_\n- **--vf-titlebar-height** - window/dialog title bars _(default: undefined)_\n- **--vf-scrollbar-thumb** - scrollbar thumb/elevator (white) _(default: undefined)_\n- **--vf-scrollbar-track** - the scroll trough's base color under the dot-dither (white) _(default: undefined)_\n\n### **CSS Parts:**\n - **frame** - The outer frame (the double frame's 1px rule; the bar and the inner band sit inside it).\n- **title-bar** - The striped title bar (default chrome only).\n- **title** - The centered title patch (or the plain-frame heading).\n- **close-box** - The close widget (`closable`, default chrome only).\n- **body** - The white content area.\n- **content** - The scrolling region inside the body (heading + slotted content, not the footer). Inert while the content fits; over-stuffed, it scrolls under a System 7 rail and becomes a keyboard stop.\n- **footer** - The action row wrapping the buttons.\n- **buttons** - The button group inside the footer.",
|
|
607
|
+
"description": "`<vf-dialog>` — the System 7 modal dialog shell.\n\nTwo chromes, one modal lifecycle (native `<dialog>` for top-layer rendering\nand focus trapping, with a fully transparent backdrop — no dimming). Both\nare the same dBoxProc double frame — 1px outer rule, 2px gap, 2px inner\nband, no shadow (vfModalFrame):\n\n- **Default:** the movable modal (movableDBoxProc) — the striped title bar\n set into the top of that frame, with a centered title over a white body.\n Drag the title bar to move it. `closable` adds the standard close box\n (left of the bar) — the HIG's own figures disagree on whether a movable\n modal carries one (Figure 5-1 says yes, Figure 6-1 and the Chapter 6 text\n say no), so the component enables either reading rather than enforcing\n one.\n- **`frame=\"plain\"`:** the modal dialog box — the bare frame, no title bar —\n and immovable, like the original. A `heading` renders as a centered\n display-face heading at the top of the body (the reference art's \"Dialog\n title\"); `closable` is ignored, there being no bar to carry the widget.\n\nOpen it with `show()` (or set the `open` attribute/property); close with\n`close()`. Escape closes it and fires `vf-close` with\n`{ reason: 'escape' }`; the close box and programmatic closing fire\n`{ reason: 'close' }`. With `light-dismiss`, a click outside the frame\ncloses it too, with `{ reason: 'outside' }` — for the About box; off by\ndefault, since the classic modal ignored an outside click.\n\nKeyboard, the classic Dialog Manager's two rules (VfModalDialog):\non open, focus goes to the first text-entry control — a slotted control\nwith `autofocus` first — or, with none, to the default button\n(`vf-button variant=\"default\"`). Return or Enter activates the default\nbutton from anywhere in the dialog, a focused Cancel included; Space\npresses the focused control. A link keeps its own Enter, and in a\nmulti-line editor Return inserts the newline while the keypad's Enter\nactivates the button.\n---\n\n\n### **Events:**\n - **vf-close** - Dialog closed. Detail `{ reason: 'escape' | 'close' | 'outside' }` — `'outside'` only under `light-dismiss`.\n\n### **Slots:**\n - _default_ - Default slot: dialog body content.\n- **buttons** - Optional action buttons. Rendered as a bottom-right `vf-button-group` (equal-width, faces aligned); the footer only takes space when the slot is populated.\n\n### **CSS Properties:**\n - **--vf-dots-pattern** - the windoid bar's dot-grid dither — a 2×2 tile, one black pixel at the origin (`vfDots`; override the whole pattern like `--vf-desktop-pattern`) _(default: undefined)_\n- **--vf-titlebar-height** - window/dialog title bars _(default: undefined)_\n- **--vf-scrollbar-thumb** - scrollbar thumb/elevator (white) _(default: undefined)_\n- **--vf-scrollbar-track** - the scroll trough's base color under the dot-dither (white) _(default: undefined)_\n\n### **CSS Parts:**\n - **frame** - The outer frame (the double frame's 1px rule; the bar and the inner band sit inside it).\n- **title-bar** - The striped title bar (default chrome only).\n- **title** - The centered title patch (or the plain-frame heading).\n- **close-box** - The close widget (`closable`, default chrome only).\n- **body** - The white content area.\n- **content** - The scrolling region inside the body (heading + slotted content, not the footer). Inert while the content fits; over-stuffed, it scrolls under a System 7 rail and becomes a keyboard stop.\n- **footer** - The action row wrapping the buttons.\n- **buttons** - The button group inside the footer.",
|
|
558
608
|
"doc-url": "",
|
|
559
609
|
"attributes": [
|
|
560
610
|
{
|
|
@@ -701,6 +751,11 @@
|
|
|
701
751
|
"name": "left",
|
|
702
752
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
703
753
|
"value": { "type": "number | null | undefined" }
|
|
754
|
+
},
|
|
755
|
+
{
|
|
756
|
+
"name": "fixed",
|
|
757
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
758
|
+
"value": { "type": "boolean", "default": "false" }
|
|
704
759
|
}
|
|
705
760
|
],
|
|
706
761
|
"slots": [
|
|
@@ -727,6 +782,11 @@
|
|
|
727
782
|
"name": "left",
|
|
728
783
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
729
784
|
"type": "number | null | undefined"
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
"name": "fixed",
|
|
788
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
789
|
+
"type": "boolean"
|
|
730
790
|
}
|
|
731
791
|
],
|
|
732
792
|
"events": []
|
|
@@ -781,6 +841,11 @@
|
|
|
781
841
|
"name": "left",
|
|
782
842
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
783
843
|
"value": { "type": "number | null | undefined" }
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
"name": "fixed",
|
|
847
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
848
|
+
"value": { "type": "boolean", "default": "false" }
|
|
784
849
|
}
|
|
785
850
|
],
|
|
786
851
|
"slots": [
|
|
@@ -836,6 +901,11 @@
|
|
|
836
901
|
"name": "left",
|
|
837
902
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
838
903
|
"type": "number | null | undefined"
|
|
904
|
+
},
|
|
905
|
+
{
|
|
906
|
+
"name": "fixed",
|
|
907
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
908
|
+
"type": "boolean"
|
|
839
909
|
}
|
|
840
910
|
],
|
|
841
911
|
"events": []
|
|
@@ -905,6 +975,11 @@
|
|
|
905
975
|
"name": "left",
|
|
906
976
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
907
977
|
"value": { "type": "number | null | undefined" }
|
|
978
|
+
},
|
|
979
|
+
{
|
|
980
|
+
"name": "fixed",
|
|
981
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
982
|
+
"value": { "type": "boolean", "default": "false" }
|
|
908
983
|
}
|
|
909
984
|
],
|
|
910
985
|
"slots": [
|
|
@@ -1000,6 +1075,11 @@
|
|
|
1000
1075
|
"name": "left",
|
|
1001
1076
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1002
1077
|
"type": "number | null | undefined"
|
|
1078
|
+
},
|
|
1079
|
+
{
|
|
1080
|
+
"name": "fixed",
|
|
1081
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1082
|
+
"type": "boolean"
|
|
1003
1083
|
}
|
|
1004
1084
|
],
|
|
1005
1085
|
"events": [
|
|
@@ -1050,6 +1130,11 @@
|
|
|
1050
1130
|
"name": "left",
|
|
1051
1131
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1052
1132
|
"value": { "type": "number | null | undefined" }
|
|
1133
|
+
},
|
|
1134
|
+
{
|
|
1135
|
+
"name": "fixed",
|
|
1136
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1137
|
+
"value": { "type": "boolean", "default": "false" }
|
|
1053
1138
|
}
|
|
1054
1139
|
],
|
|
1055
1140
|
"slots": [
|
|
@@ -1080,6 +1165,11 @@
|
|
|
1080
1165
|
"name": "left",
|
|
1081
1166
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1082
1167
|
"type": "number | null | undefined"
|
|
1168
|
+
},
|
|
1169
|
+
{
|
|
1170
|
+
"name": "fixed",
|
|
1171
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1172
|
+
"type": "boolean"
|
|
1083
1173
|
}
|
|
1084
1174
|
],
|
|
1085
1175
|
"events": []
|
|
@@ -1124,6 +1214,11 @@
|
|
|
1124
1214
|
"name": "left",
|
|
1125
1215
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1126
1216
|
"value": { "type": "number | null | undefined" }
|
|
1217
|
+
},
|
|
1218
|
+
{
|
|
1219
|
+
"name": "fixed",
|
|
1220
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1221
|
+
"value": { "type": "boolean", "default": "false" }
|
|
1127
1222
|
}
|
|
1128
1223
|
],
|
|
1129
1224
|
"slots": [{ "name": "", "description": "The caption text." }],
|
|
@@ -1164,6 +1259,11 @@
|
|
|
1164
1259
|
"name": "left",
|
|
1165
1260
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1166
1261
|
"type": "number | null | undefined"
|
|
1262
|
+
},
|
|
1263
|
+
{
|
|
1264
|
+
"name": "fixed",
|
|
1265
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1266
|
+
"type": "boolean"
|
|
1167
1267
|
}
|
|
1168
1268
|
],
|
|
1169
1269
|
"events": []
|
|
@@ -1198,6 +1298,11 @@
|
|
|
1198
1298
|
"name": "left",
|
|
1199
1299
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1200
1300
|
"value": { "type": "number | null | undefined" }
|
|
1301
|
+
},
|
|
1302
|
+
{
|
|
1303
|
+
"name": "fixed",
|
|
1304
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1305
|
+
"value": { "type": "boolean", "default": "false" }
|
|
1201
1306
|
}
|
|
1202
1307
|
],
|
|
1203
1308
|
"slots": [
|
|
@@ -1240,6 +1345,11 @@
|
|
|
1240
1345
|
"name": "left",
|
|
1241
1346
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1242
1347
|
"type": "number | null | undefined"
|
|
1348
|
+
},
|
|
1349
|
+
{
|
|
1350
|
+
"name": "fixed",
|
|
1351
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1352
|
+
"type": "boolean"
|
|
1243
1353
|
}
|
|
1244
1354
|
],
|
|
1245
1355
|
"events": []
|
|
@@ -1279,6 +1389,11 @@
|
|
|
1279
1389
|
"name": "left",
|
|
1280
1390
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1281
1391
|
"value": { "type": "number | null | undefined" }
|
|
1392
|
+
},
|
|
1393
|
+
{
|
|
1394
|
+
"name": "fixed",
|
|
1395
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1396
|
+
"value": { "type": "boolean", "default": "false" }
|
|
1282
1397
|
}
|
|
1283
1398
|
],
|
|
1284
1399
|
"slots": [{ "name": "", "description": "`vf-list-item` elements." }],
|
|
@@ -1325,6 +1440,11 @@
|
|
|
1325
1440
|
"name": "left",
|
|
1326
1441
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1327
1442
|
"type": "number | null | undefined"
|
|
1443
|
+
},
|
|
1444
|
+
{
|
|
1445
|
+
"name": "fixed",
|
|
1446
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1447
|
+
"type": "boolean"
|
|
1328
1448
|
}
|
|
1329
1449
|
],
|
|
1330
1450
|
"events": [
|
|
@@ -1364,6 +1484,11 @@
|
|
|
1364
1484
|
"name": "left",
|
|
1365
1485
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1366
1486
|
"value": { "type": "number | null | undefined" }
|
|
1487
|
+
},
|
|
1488
|
+
{
|
|
1489
|
+
"name": "fixed",
|
|
1490
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1491
|
+
"value": { "type": "boolean", "default": "false" }
|
|
1367
1492
|
}
|
|
1368
1493
|
],
|
|
1369
1494
|
"slots": [{ "name": "", "description": "`vf-menu` elements." }],
|
|
@@ -1394,6 +1519,11 @@
|
|
|
1394
1519
|
"name": "left",
|
|
1395
1520
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1396
1521
|
"type": "number | null | undefined"
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
"name": "fixed",
|
|
1525
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1526
|
+
"type": "boolean"
|
|
1397
1527
|
}
|
|
1398
1528
|
],
|
|
1399
1529
|
"events": []
|
|
@@ -1443,6 +1573,11 @@
|
|
|
1443
1573
|
"name": "left",
|
|
1444
1574
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1445
1575
|
"value": { "type": "number | null | undefined" }
|
|
1576
|
+
},
|
|
1577
|
+
{
|
|
1578
|
+
"name": "fixed",
|
|
1579
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1580
|
+
"value": { "type": "boolean", "default": "false" }
|
|
1446
1581
|
}
|
|
1447
1582
|
],
|
|
1448
1583
|
"slots": [{ "name": "", "description": "The item label." }],
|
|
@@ -1493,6 +1628,11 @@
|
|
|
1493
1628
|
"name": "left",
|
|
1494
1629
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1495
1630
|
"type": "number | null | undefined"
|
|
1631
|
+
},
|
|
1632
|
+
{
|
|
1633
|
+
"name": "fixed",
|
|
1634
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1635
|
+
"type": "boolean"
|
|
1496
1636
|
}
|
|
1497
1637
|
],
|
|
1498
1638
|
"events": [
|
|
@@ -1532,6 +1672,11 @@
|
|
|
1532
1672
|
"name": "left",
|
|
1533
1673
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1534
1674
|
"value": { "type": "number | null | undefined" }
|
|
1675
|
+
},
|
|
1676
|
+
{
|
|
1677
|
+
"name": "fixed",
|
|
1678
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1679
|
+
"value": { "type": "boolean", "default": "false" }
|
|
1535
1680
|
}
|
|
1536
1681
|
],
|
|
1537
1682
|
"slots": [
|
|
@@ -1591,6 +1736,11 @@
|
|
|
1591
1736
|
"name": "left",
|
|
1592
1737
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1593
1738
|
"type": "number | null | undefined"
|
|
1739
|
+
},
|
|
1740
|
+
{
|
|
1741
|
+
"name": "fixed",
|
|
1742
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1743
|
+
"type": "boolean"
|
|
1594
1744
|
}
|
|
1595
1745
|
],
|
|
1596
1746
|
"events": []
|
|
@@ -1626,6 +1776,11 @@
|
|
|
1626
1776
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1627
1777
|
"value": { "type": "number | null | undefined" }
|
|
1628
1778
|
},
|
|
1779
|
+
{
|
|
1780
|
+
"name": "fixed",
|
|
1781
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1782
|
+
"value": { "type": "boolean", "default": "false" }
|
|
1783
|
+
},
|
|
1629
1784
|
{
|
|
1630
1785
|
"name": "value",
|
|
1631
1786
|
"description": "Current value. Synced on every keystroke and submitted with forms.",
|
|
@@ -1712,6 +1867,11 @@
|
|
|
1712
1867
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1713
1868
|
"type": "number | null | undefined"
|
|
1714
1869
|
},
|
|
1870
|
+
{
|
|
1871
|
+
"name": "fixed",
|
|
1872
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1873
|
+
"type": "boolean"
|
|
1874
|
+
},
|
|
1715
1875
|
{
|
|
1716
1876
|
"name": "value",
|
|
1717
1877
|
"description": "Current value. Synced on every keystroke and submitted with forms.",
|
|
@@ -1827,6 +1987,11 @@
|
|
|
1827
1987
|
"name": "left",
|
|
1828
1988
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1829
1989
|
"value": { "type": "number | null | undefined" }
|
|
1990
|
+
},
|
|
1991
|
+
{
|
|
1992
|
+
"name": "fixed",
|
|
1993
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
1994
|
+
"value": { "type": "boolean", "default": "false" }
|
|
1830
1995
|
}
|
|
1831
1996
|
],
|
|
1832
1997
|
"events": [],
|
|
@@ -1862,6 +2027,11 @@
|
|
|
1862
2027
|
"name": "left",
|
|
1863
2028
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1864
2029
|
"type": "number | null | undefined"
|
|
2030
|
+
},
|
|
2031
|
+
{
|
|
2032
|
+
"name": "fixed",
|
|
2033
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2034
|
+
"type": "boolean"
|
|
1865
2035
|
}
|
|
1866
2036
|
],
|
|
1867
2037
|
"events": []
|
|
@@ -1901,6 +2071,11 @@
|
|
|
1901
2071
|
"name": "left",
|
|
1902
2072
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1903
2073
|
"value": { "type": "number | null | undefined" }
|
|
2074
|
+
},
|
|
2075
|
+
{
|
|
2076
|
+
"name": "fixed",
|
|
2077
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2078
|
+
"value": { "type": "boolean", "default": "false" }
|
|
1904
2079
|
}
|
|
1905
2080
|
],
|
|
1906
2081
|
"slots": [{ "name": "", "description": "The paragraph copy." }],
|
|
@@ -1936,6 +2111,11 @@
|
|
|
1936
2111
|
"name": "left",
|
|
1937
2112
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1938
2113
|
"type": "number | null | undefined"
|
|
2114
|
+
},
|
|
2115
|
+
{
|
|
2116
|
+
"name": "fixed",
|
|
2117
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2118
|
+
"type": "boolean"
|
|
1939
2119
|
}
|
|
1940
2120
|
],
|
|
1941
2121
|
"events": []
|
|
@@ -1975,6 +2155,11 @@
|
|
|
1975
2155
|
"name": "left",
|
|
1976
2156
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
1977
2157
|
"value": { "type": "number | null | undefined" }
|
|
2158
|
+
},
|
|
2159
|
+
{
|
|
2160
|
+
"name": "fixed",
|
|
2161
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2162
|
+
"value": { "type": "boolean", "default": "false" }
|
|
1978
2163
|
}
|
|
1979
2164
|
],
|
|
1980
2165
|
"events": [],
|
|
@@ -2011,6 +2196,11 @@
|
|
|
2011
2196
|
"name": "left",
|
|
2012
2197
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2013
2198
|
"type": "number | null | undefined"
|
|
2199
|
+
},
|
|
2200
|
+
{
|
|
2201
|
+
"name": "fixed",
|
|
2202
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2203
|
+
"type": "boolean"
|
|
2014
2204
|
}
|
|
2015
2205
|
],
|
|
2016
2206
|
"events": []
|
|
@@ -2046,6 +2236,11 @@
|
|
|
2046
2236
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2047
2237
|
"value": { "type": "number | null | undefined" }
|
|
2048
2238
|
},
|
|
2239
|
+
{
|
|
2240
|
+
"name": "fixed",
|
|
2241
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2242
|
+
"value": { "type": "boolean", "default": "false" }
|
|
2243
|
+
},
|
|
2049
2244
|
{
|
|
2050
2245
|
"name": "disabled",
|
|
2051
2246
|
"description": "Disables the control: it stops responding and submits no value. Each\ncontrol dims per SPEC §1 (typically the label greys while the 1-bit chrome\nstays black).",
|
|
@@ -2105,6 +2300,11 @@
|
|
|
2105
2300
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2106
2301
|
"type": "number | null | undefined"
|
|
2107
2302
|
},
|
|
2303
|
+
{
|
|
2304
|
+
"name": "fixed",
|
|
2305
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2306
|
+
"type": "boolean"
|
|
2307
|
+
},
|
|
2108
2308
|
{
|
|
2109
2309
|
"name": "disabled",
|
|
2110
2310
|
"description": "Disables the control: it stops responding and submits no value. Each\ncontrol dims per SPEC §1 (typically the label greys while the 1-bit chrome\nstays black).",
|
|
@@ -2181,6 +2381,11 @@
|
|
|
2181
2381
|
"name": "left",
|
|
2182
2382
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2183
2383
|
"value": { "type": "number | null | undefined" }
|
|
2384
|
+
},
|
|
2385
|
+
{
|
|
2386
|
+
"name": "fixed",
|
|
2387
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2388
|
+
"value": { "type": "boolean", "default": "false" }
|
|
2184
2389
|
}
|
|
2185
2390
|
],
|
|
2186
2391
|
"slots": [
|
|
@@ -2227,6 +2432,11 @@
|
|
|
2227
2432
|
"name": "left",
|
|
2228
2433
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2229
2434
|
"type": "number | null | undefined"
|
|
2435
|
+
},
|
|
2436
|
+
{
|
|
2437
|
+
"name": "fixed",
|
|
2438
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2439
|
+
"type": "boolean"
|
|
2230
2440
|
}
|
|
2231
2441
|
],
|
|
2232
2442
|
"events": [
|
|
@@ -2269,6 +2479,11 @@
|
|
|
2269
2479
|
"name": "left",
|
|
2270
2480
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2271
2481
|
"value": { "type": "number | null | undefined" }
|
|
2482
|
+
},
|
|
2483
|
+
{
|
|
2484
|
+
"name": "fixed",
|
|
2485
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2486
|
+
"value": { "type": "boolean", "default": "false" }
|
|
2272
2487
|
}
|
|
2273
2488
|
],
|
|
2274
2489
|
"slots": [{ "name": "", "description": "Scrollable content." }],
|
|
@@ -2299,6 +2514,11 @@
|
|
|
2299
2514
|
"name": "left",
|
|
2300
2515
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2301
2516
|
"type": "number | null | undefined"
|
|
2517
|
+
},
|
|
2518
|
+
{
|
|
2519
|
+
"name": "fixed",
|
|
2520
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2521
|
+
"type": "boolean"
|
|
2302
2522
|
}
|
|
2303
2523
|
],
|
|
2304
2524
|
"events": []
|
|
@@ -2334,6 +2554,11 @@
|
|
|
2334
2554
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2335
2555
|
"value": { "type": "number | null | undefined" }
|
|
2336
2556
|
},
|
|
2557
|
+
{
|
|
2558
|
+
"name": "fixed",
|
|
2559
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2560
|
+
"value": { "type": "boolean", "default": "false" }
|
|
2561
|
+
},
|
|
2337
2562
|
{
|
|
2338
2563
|
"name": "description",
|
|
2339
2564
|
"description": "Description for the control — hint text, a format, a unit. A host-level\n`aria-describedby` cannot reach a focusable element inside a shadow root,\nso there was structurally no way to describe a field; this property is\nthat channel. It renders as a hidden span in the control's own shadow root\nwith the inner control's `aria-describedby` pointing at it — the\nshadow-internal IDREF idiom `vf-dialog`'s title patch already uses. A\nhost-level `aria-describedby` is bridged into the same span when this\nproperty is empty, and a failing constraint's validationMessage\njoins it too, so AT hears the error where it hears the hint.\n\nHost-role controls get neither half: their `aria-describedby` already\nworks, and their validation message reaches AT the way a native control's\ndoes — `aria-invalid` plus the browser's own validation UI, not AccName.",
|
|
@@ -2392,6 +2617,11 @@
|
|
|
2392
2617
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2393
2618
|
"type": "number | null | undefined"
|
|
2394
2619
|
},
|
|
2620
|
+
{
|
|
2621
|
+
"name": "fixed",
|
|
2622
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2623
|
+
"type": "boolean"
|
|
2624
|
+
},
|
|
2395
2625
|
{
|
|
2396
2626
|
"name": "description",
|
|
2397
2627
|
"description": "Description for the control — hint text, a format, a unit. A host-level\n`aria-describedby` cannot reach a focusable element inside a shadow root,\nso there was structurally no way to describe a field; this property is\nthat channel. It renders as a hidden span in the control's own shadow root\nwith the inner control's `aria-describedby` pointing at it — the\nshadow-internal IDREF idiom `vf-dialog`'s title patch already uses. A\nhost-level `aria-describedby` is bridged into the same span when this\nproperty is empty, and a failing constraint's validationMessage\njoins it too, so AT hears the error where it hears the hint.\n\nHost-role controls get neither half: their `aria-describedby` already\nworks, and their validation message reaches AT the way a native control's\ndoes — `aria-invalid` plus the browser's own validation UI, not AccName.",
|
|
@@ -2463,6 +2693,11 @@
|
|
|
2463
2693
|
"name": "left",
|
|
2464
2694
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2465
2695
|
"value": { "type": "number | null | undefined" }
|
|
2696
|
+
},
|
|
2697
|
+
{
|
|
2698
|
+
"name": "fixed",
|
|
2699
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2700
|
+
"value": { "type": "boolean", "default": "false" }
|
|
2466
2701
|
}
|
|
2467
2702
|
],
|
|
2468
2703
|
"events": [],
|
|
@@ -2483,6 +2718,11 @@
|
|
|
2483
2718
|
"name": "left",
|
|
2484
2719
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2485
2720
|
"type": "number | null | undefined"
|
|
2721
|
+
},
|
|
2722
|
+
{
|
|
2723
|
+
"name": "fixed",
|
|
2724
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2725
|
+
"type": "boolean"
|
|
2486
2726
|
}
|
|
2487
2727
|
],
|
|
2488
2728
|
"events": []
|
|
@@ -2533,6 +2773,11 @@
|
|
|
2533
2773
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2534
2774
|
"value": { "type": "number | null | undefined" }
|
|
2535
2775
|
},
|
|
2776
|
+
{
|
|
2777
|
+
"name": "fixed",
|
|
2778
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2779
|
+
"value": { "type": "boolean", "default": "false" }
|
|
2780
|
+
},
|
|
2536
2781
|
{
|
|
2537
2782
|
"name": "disabled",
|
|
2538
2783
|
"description": "Disables the control: it stops responding and submits no value. Each\ncontrol dims per SPEC §1 (typically the label greys while the 1-bit chrome\nstays black).",
|
|
@@ -2606,6 +2851,11 @@
|
|
|
2606
2851
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2607
2852
|
"type": "number | null | undefined"
|
|
2608
2853
|
},
|
|
2854
|
+
{
|
|
2855
|
+
"name": "fixed",
|
|
2856
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2857
|
+
"type": "boolean"
|
|
2858
|
+
},
|
|
2609
2859
|
{
|
|
2610
2860
|
"name": "disabled",
|
|
2611
2861
|
"description": "Disables the control: it stops responding and submits no value. Each\ncontrol dims per SPEC §1 (typically the label greys while the 1-bit chrome\nstays black).",
|
|
@@ -2701,6 +2951,11 @@
|
|
|
2701
2951
|
"name": "left",
|
|
2702
2952
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2703
2953
|
"value": { "type": "number | null | undefined" }
|
|
2954
|
+
},
|
|
2955
|
+
{
|
|
2956
|
+
"name": "fixed",
|
|
2957
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
2958
|
+
"value": { "type": "boolean", "default": "false" }
|
|
2704
2959
|
}
|
|
2705
2960
|
],
|
|
2706
2961
|
"slots": [
|
|
@@ -2751,6 +3006,11 @@
|
|
|
2751
3006
|
"name": "left",
|
|
2752
3007
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2753
3008
|
"type": "number | null | undefined"
|
|
3009
|
+
},
|
|
3010
|
+
{
|
|
3011
|
+
"name": "fixed",
|
|
3012
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
3013
|
+
"type": "boolean"
|
|
2754
3014
|
}
|
|
2755
3015
|
],
|
|
2756
3016
|
"events": []
|
|
@@ -2801,6 +3061,11 @@
|
|
|
2801
3061
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2802
3062
|
"value": { "type": "number | null | undefined" }
|
|
2803
3063
|
},
|
|
3064
|
+
{
|
|
3065
|
+
"name": "fixed",
|
|
3066
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
3067
|
+
"value": { "type": "boolean", "default": "false" }
|
|
3068
|
+
},
|
|
2804
3069
|
{
|
|
2805
3070
|
"name": "description",
|
|
2806
3071
|
"description": "Description for the control — hint text, a format, a unit. A host-level\n`aria-describedby` cannot reach a focusable element inside a shadow root,\nso there was structurally no way to describe a field; this property is\nthat channel. It renders as a hidden span in the control's own shadow root\nwith the inner control's `aria-describedby` pointing at it — the\nshadow-internal IDREF idiom `vf-dialog`'s title patch already uses. A\nhost-level `aria-describedby` is bridged into the same span when this\nproperty is empty, and a failing constraint's validationMessage\njoins it too, so AT hears the error where it hears the hint.\n\nHost-role controls get neither half: their `aria-describedby` already\nworks, and their validation message reaches AT the way a native control's\ndoes — `aria-invalid` plus the browser's own validation UI, not AccName.",
|
|
@@ -2855,6 +3120,11 @@
|
|
|
2855
3120
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2856
3121
|
"type": "number | null | undefined"
|
|
2857
3122
|
},
|
|
3123
|
+
{
|
|
3124
|
+
"name": "fixed",
|
|
3125
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
3126
|
+
"type": "boolean"
|
|
3127
|
+
},
|
|
2858
3128
|
{
|
|
2859
3129
|
"name": "description",
|
|
2860
3130
|
"description": "Description for the control — hint text, a format, a unit. A host-level\n`aria-describedby` cannot reach a focusable element inside a shadow root,\nso there was structurally no way to describe a field; this property is\nthat channel. It renders as a hidden span in the control's own shadow root\nwith the inner control's `aria-describedby` pointing at it — the\nshadow-internal IDREF idiom `vf-dialog`'s title patch already uses. A\nhost-level `aria-describedby` is bridged into the same span when this\nproperty is empty, and a failing constraint's validationMessage\njoins it too, so AT hears the error where it hears the hint.\n\nHost-role controls get neither half: their `aria-describedby` already\nworks, and their validation message reaches AT the way a native control's\ndoes — `aria-invalid` plus the browser's own validation UI, not AccName.",
|
|
@@ -2909,6 +3179,11 @@
|
|
|
2909
3179
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2910
3180
|
"value": { "type": "number | null | undefined" }
|
|
2911
3181
|
},
|
|
3182
|
+
{
|
|
3183
|
+
"name": "fixed",
|
|
3184
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
3185
|
+
"value": { "type": "boolean", "default": "false" }
|
|
3186
|
+
},
|
|
2912
3187
|
{
|
|
2913
3188
|
"name": "value",
|
|
2914
3189
|
"description": "Current value. Synced on every keystroke and submitted with forms.",
|
|
@@ -2985,6 +3260,11 @@
|
|
|
2985
3260
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2986
3261
|
"type": "number | null | undefined"
|
|
2987
3262
|
},
|
|
3263
|
+
{
|
|
3264
|
+
"name": "fixed",
|
|
3265
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
3266
|
+
"type": "boolean"
|
|
3267
|
+
},
|
|
2988
3268
|
{
|
|
2989
3269
|
"name": "value",
|
|
2990
3270
|
"description": "Current value. Synced on every keystroke and submitted with forms.",
|
|
@@ -3086,6 +3366,11 @@
|
|
|
3086
3366
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
3087
3367
|
"value": { "type": "number | null | undefined" }
|
|
3088
3368
|
},
|
|
3369
|
+
{
|
|
3370
|
+
"name": "fixed",
|
|
3371
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
3372
|
+
"value": { "type": "boolean", "default": "false" }
|
|
3373
|
+
},
|
|
3089
3374
|
{
|
|
3090
3375
|
"name": "value",
|
|
3091
3376
|
"description": "Current value. Synced on every keystroke and submitted with forms.",
|
|
@@ -3162,6 +3447,11 @@
|
|
|
3162
3447
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
3163
3448
|
"type": "number | null | undefined"
|
|
3164
3449
|
},
|
|
3450
|
+
{
|
|
3451
|
+
"name": "fixed",
|
|
3452
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
3453
|
+
"type": "boolean"
|
|
3454
|
+
},
|
|
3165
3455
|
{
|
|
3166
3456
|
"name": "value",
|
|
3167
3457
|
"description": "Current value. Synced on every keystroke and submitted with forms.",
|
|
@@ -3245,7 +3535,7 @@
|
|
|
3245
3535
|
},
|
|
3246
3536
|
{
|
|
3247
3537
|
"name": "vf-window",
|
|
3248
|
-
"description": "`<vf-window>` — the System 7 desktop-window shell.\n\nStriped title bar with optional close box (left) and zoom box (right), a\nsolid-white frame with a hard offset shadow, an optional grow box for\nresizing, optional edge scroll rails (`scrollbars`), and the slim windoid\nchrome (`variant=\"utility\"`). The HIG's window archetypes are parameter\nrecipes over this shell rather than fixed anatomies — the component enables\nHIG compliance, it doesn't enforce it (see docs/LAYOUT.md \"Window archetypes\"):\nthe full document window is `closable zoomable movable resizable\nscrollbars=\"both\"`, a modeless dialog box is `closable movable`, a utility\nwindow is `variant=\"utility\" movable`. Place inside `<vf-desktop>` to get\nclick-to-front stacking and automatic `active` management (utility windows\nfloat above the document tier).\n\nEvery recipe also declares `width` AND `height` (VfSized), in whole\nsystem px — the art's own unit, so the window keeps its proportions to the\nchrome inside it at every display density (a CSS-px size stays put while\nthe components in it triple). A window is a fixed box in both axes, the way\nthe WIND resource carried it: left to layout it takes whatever its\ncontainer or content hands it, which is how a title bar ends up wider than\nthe screen or a dialog reflows as it moves — and a window that grows with\nits body is one the user can neither predict nor (via the grow box) own.\nContent taller than the declared box is clipped at the frame the way the\nclassic content region was; `scrollbars` lets the user reach the rest.\nUnset, the window still renders — normal block layout, as before — and\nsays so once in the console.\n---\n\n\n### **Events:**\n - **vf-close** - Close box clicked. Detail `{ reason: 'close' }` (shape- compatible with vf-dialog's `vf-close`). The window does NOT remove itself; the consumer decides what closing means.\n- **vf-zoom** - Zoom box clicked. Detail `{}`.\n- **vf-resize** - The grow box resized the window. Detail `{ width, height, commit }`, sizes in whole system px: one event per size the drag writes (`commit: false`), fired after the new box is applied so a handler that measures reads the resized layout, then a final `commit: true` as the gesture settles — only when it changed the size. Fired by the gesture alone: a programmatic `width`/`height` write fires nothing, the way a value set fires no `vf-change`.\n\n### **Slots:**\n - _default_ - Default slot: window body content.\n- **status** - Optional status-bar content — the classic bottom readout strip (\"40px x 40px\"): a 1px rule over a 15px white band under the body, body-face text on its native line. Takes no space until populated; a `resizable` window's grow box sits flush in its right end.\n\n### **CSS Properties:**\n - **--vf-dots-pattern** - the windoid bar's dot-grid dither — a 2×2 motif, one black pixel at its origin, on a 30-system-px tile (`vfDots`; override the whole tile like `--vf-desktop-pattern` — consumer art renders as a placed tile grid at that same geometry) _(default: undefined)_\n- **--vf-titlebar-height** - window/dialog title bars _(default: undefined)_\n- **--vf-titlebar-height-utility** - the slim `vf-window[variant=\"utility\"]` (windoid) bar — 11px interior + 1px bottom rule, traced from `Windows/utility-window.png` _(default: 12px)_\n- **--vf-status-bar-height** - the status strip: 1px rule + 14px interior — the grow box's own height, so the two compose flush _(default: 15px)_\n- **--vf-line-height** - the body face's native line, which the status strip's text rides (whole-pixel centered in the 14px interior) _(default: 12px)_\n\n### **CSS Parts:**\n - **frame** - The outer chrome frame.\n- **title-bar** - The striped (or dithered) title bar.\n- **title** - The centered title patch (hidden on the utility bar).\n- **close-box** - The close widget (left).\n- **zoom-box** - The zoom widget (right).\n- **body** - The content area.\n- **status-bar** - The bottom status strip (when the `status` slot is populated).\n- **grow-box** - The resize widget (bottom-right, when `resizable`).\n- **viewport** - The built-in scroll area's viewport (when `scrollbars`; re-exported from vf-scroll-area).",
|
|
3538
|
+
"description": "`<vf-window>` — the System 7 desktop-window shell.\n\nStriped title bar with optional close box (left) and zoom box (right), a\nsolid-white frame with a hard offset shadow, an optional grow box for\nresizing, optional edge scroll rails (`scrollbars`), and the slim windoid\nchrome (`variant=\"utility\"`). The HIG's window archetypes are parameter\nrecipes over this shell rather than fixed anatomies — the component enables\nHIG compliance, it doesn't enforce it (see docs/LAYOUT.md \"Window archetypes\"):\nthe full document window is `closable zoomable movable resizable\nscrollbars=\"both\"`, a modeless dialog box is `closable movable`, a utility\nwindow is `variant=\"utility\" movable`. Place inside `<vf-desktop>` to get\nclick-to-front stacking and automatic `active` management (utility windows\nfloat above the document tier).\n\nEvery recipe also declares `width` AND `height` (VfSized), in whole\nsystem px — the art's own unit, so the window keeps its proportions to the\nchrome inside it at every display density (a CSS-px size stays put while\nthe components in it triple). A window is a fixed box in both axes, the way\nthe WIND resource carried it: left to layout it takes whatever its\ncontainer or content hands it, which is how a title bar ends up wider than\nthe screen or a dialog reflows as it moves — and a window that grows with\nits body is one the user can neither predict nor (via the grow box) own.\nContent taller than the declared box is clipped at the frame the way the\nclassic content region was; `scrollbars` lets the user reach the rest.\nUnset, the window still renders — normal block layout, as before — and\nsays so once in the console.\n---\n\n\n### **Events:**\n - **vf-close** - Close box clicked. Detail `{ reason: 'close' }` (shape- compatible with vf-dialog's `vf-close`). The window does NOT remove itself; the consumer decides what closing means.\n- **vf-zoom** - Zoom box clicked. Detail `{}`.\n- **vf-resize** - The grow box resized the window. Detail `{ width, height, commit }`, sizes in whole system px: one event per size the drag writes (`commit: false`), fired after the new box is applied so a handler that measures reads the resized layout, then a final `commit: true` as the gesture settles — only when it changed the size. Fired by the gesture alone: a programmatic `width`/`height` write fires nothing, the way a value set fires no `vf-change`.\n\n### **Slots:**\n - _default_ - Default slot: window body content.\n- **header** - Optional header content — a band between the title bar and the body, the full width of the window (the Finder window's header line): a white interior over a 1px rule, no inset of its own, a positioning anchor for placed children. As tall as its content unless `header-height` states it. Under `scrollbars` the vertical rail begins below it, so the header spans the rail's column. Takes no space until populated.\n- **status** - Optional status-bar content — the classic bottom readout strip (\"40px x 40px\"): a 1px rule over a 15px white band under the body, body-face text on its native line. Takes no space until populated; a `resizable` window's grow box sits flush in its right end.\n\n### **CSS Properties:**\n - **--vf-dots-pattern** - the windoid bar's dot-grid dither — a 2×2 motif, one black pixel at its origin, on a 30-system-px tile (`vfDots`; override the whole tile like `--vf-desktop-pattern` — consumer art renders as a placed tile grid at that same geometry) _(default: undefined)_\n- **--vf-titlebar-height** - window/dialog title bars _(default: undefined)_\n- **--vf-titlebar-height-utility** - the slim `vf-window[variant=\"utility\"]` (windoid) bar — 11px interior + 1px bottom rule, traced from `Windows/utility-window.png` _(default: 12px)_\n- **--vf-status-bar-height** - the status strip: 1px rule + 14px interior — the grow box's own height, so the two compose flush _(default: 15px)_\n- **--vf-line-height** - the body face's native line, which the status strip's text rides (whole-pixel centered in the 14px interior) _(default: 12px)_\n\n### **CSS Parts:**\n - **frame** - The outer chrome frame.\n- **title-bar** - The striped (or dithered) title bar.\n- **title** - The centered title patch (hidden on the utility bar).\n- **close-box** - The close widget (left).\n- **zoom-box** - The zoom widget (right).\n- **body** - The content area.\n- **header** - The header strip between the title bar and the body (when the `header` slot is populated).\n- **status-bar** - The bottom status strip (when the `status` slot is populated).\n- **grow-box** - The resize widget (bottom-right, when `resizable`).\n- **viewport** - The built-in scroll area's viewport (when `scrollbars`; re-exported from vf-scroll-area).",
|
|
3249
3539
|
"doc-url": "",
|
|
3250
3540
|
"attributes": [
|
|
3251
3541
|
{
|
|
@@ -3310,6 +3600,11 @@
|
|
|
3310
3600
|
"type": "'vertical' | 'horizontal' | 'both' | undefined"
|
|
3311
3601
|
}
|
|
3312
3602
|
},
|
|
3603
|
+
{
|
|
3604
|
+
"name": "header-height",
|
|
3605
|
+
"description": "The header's height in whole system px, rule included — the way every\nkit bar counts its rule (an 18px title bar is 17 + 1). Unset, the header\nis as tall as what is slotted into it, plus the rule. Only matters while\nthe `header` slot is populated.",
|
|
3606
|
+
"value": { "type": "| number\n | null | undefined" }
|
|
3607
|
+
},
|
|
3313
3608
|
{
|
|
3314
3609
|
"name": "width",
|
|
3315
3610
|
"description": "Width in whole system px. What the number means is the component's own\naffair — the measure a paragraph wraps to, a caption column, a window's\nbox — but the mechanics are shared: the length lands on the host as a\nlive `calc(var(--vf-scale, 1) * Npx)`, so the box scales with the\ndisplay and sits on the device-pixel grid by construction. Remove it\nand the width returns to layout.",
|
|
@@ -3329,10 +3624,19 @@
|
|
|
3329
3624
|
"name": "left",
|
|
3330
3625
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
3331
3626
|
"value": { "type": "number | null | undefined" }
|
|
3627
|
+
},
|
|
3628
|
+
{
|
|
3629
|
+
"name": "fixed",
|
|
3630
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
3631
|
+
"value": { "type": "boolean", "default": "false" }
|
|
3332
3632
|
}
|
|
3333
3633
|
],
|
|
3334
3634
|
"slots": [
|
|
3335
3635
|
{ "name": "", "description": "Default slot: window body content." },
|
|
3636
|
+
{
|
|
3637
|
+
"name": "header",
|
|
3638
|
+
"description": "Optional header content — a band between the title bar and the body, the full width of the window (the Finder window's header line): a white interior over a 1px rule, no inset of its own, a positioning anchor for placed children. As tall as its content unless `header-height` states it. Under `scrollbars` the vertical rail begins below it, so the header spans the rail's column. Takes no space until populated."
|
|
3639
|
+
},
|
|
3336
3640
|
{
|
|
3337
3641
|
"name": "status",
|
|
3338
3642
|
"description": "Optional status-bar content — the classic bottom readout strip (\"40px x 40px\"): a 1px rule over a 15px white band under the body, body-face text on its native line. Takes no space until populated; a `resizable` window's grow box sits flush in its right end."
|
|
@@ -3414,6 +3718,11 @@
|
|
|
3414
3718
|
"description": "Put System 7 scroll rails on the window edge — the classic document\nwindow. The body slot renders inside a built-in `vf-scroll-area` pulled\none system pixel under the frame on every side, so the rails repaint the\nborder lines and a `resizable` window's grow box lands in the corner\ncell — reserved on a single-axis rail too (the area's `corner`), unless\na populated status strip holds the grow box, when the rail runs edge to\nedge onto the strip's rule. Values mirror `vf-scroll-area`'s `axis`; the\n`heading` names the scroll region; the viewport part is re-exported.\nContent runs to the frame and the rails; an inset is the content's own.\nThe slotted composition (SPEC §5 vf-scroll-area) still works for a well\nplaced inside the body.",
|
|
3415
3719
|
"type": "'vertical' | 'horizontal' | 'both' | undefined"
|
|
3416
3720
|
},
|
|
3721
|
+
{
|
|
3722
|
+
"name": "headerHeight",
|
|
3723
|
+
"description": "The header's height in whole system px, rule included — the way every\nkit bar counts its rule (an 18px title bar is 17 + 1). Unset, the header\nis as tall as what is slotted into it, plus the rule. Only matters while\nthe `header` slot is populated.",
|
|
3724
|
+
"type": "| number\n | null | undefined"
|
|
3725
|
+
},
|
|
3417
3726
|
{
|
|
3418
3727
|
"name": "width",
|
|
3419
3728
|
"description": "Width in whole system px. What the number means is the component's own\naffair — the measure a paragraph wraps to, a caption column, a window's\nbox — but the mechanics are shared: the length lands on the host as a\nlive `calc(var(--vf-scale, 1) * Npx)`, so the box scales with the\ndisplay and sits on the device-pixel grid by construction. Remove it\nand the width returns to layout.",
|
|
@@ -3433,6 +3742,11 @@
|
|
|
3433
3742
|
"name": "left",
|
|
3434
3743
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
3435
3744
|
"type": "number | null | undefined"
|
|
3745
|
+
},
|
|
3746
|
+
{
|
|
3747
|
+
"name": "fixed",
|
|
3748
|
+
"description": "Hold the placement against the visible region of the nearest scrolling\nancestor: the element keeps its stated `top`/`left` while the content\nscrolls under it, and the flag alone places it at (0,0). It comes\nbefore the flow content in its parent. Where nothing scrolls it renders\nexactly as placed.",
|
|
3749
|
+
"type": "boolean"
|
|
3436
3750
|
}
|
|
3437
3751
|
],
|
|
3438
3752
|
"events": [
|