vintage-frames 0.5.6 → 0.6.1
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 +948 -46
- package/dist/components/vf-scroll-area.d.ts +19 -10
- package/dist/components/vf-scroll-area.js +39 -21
- package/dist/components/vf-window.d.ts +23 -10
- package/dist/components/vf-window.js +46 -14
- package/dist/position.d.ts +27 -8
- package/dist/position.js +74 -18
- package/dist/scroll-rail.d.ts +10 -0
- package/dist/scroll-rail.js +3 -0
- package/dist/styles/recipes/scroll-rail.js +8 -1
- package/docs/SPEC.md +14 -12
- package/editor/vscode.html-custom-data.json +158 -13
- package/editor/web-types.json +319 -25
- 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.
|
|
4
|
+
"version": "0.6.1",
|
|
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": [
|
|
@@ -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": [
|
|
@@ -2239,7 +2449,7 @@
|
|
|
2239
2449
|
},
|
|
2240
2450
|
{
|
|
2241
2451
|
"name": "vf-scroll-area",
|
|
2242
|
-
"description": "`<vf-scroll-area>` — a container whose scrollbars look like System 7.\n\nWhite box with a 1px black frame, an inner scrolling viewport, and scroll\nrails the kit draws itself as shadow DOM (the shared `vfScrollRail` recipe):\nboxed arrow buttons at each end, a loose 1-bit dot-dither trough, and the\nclassic fixed 16px thumb. The native scrollbar is hidden, never the native\nscrolling — wheel, trackpad momentum, keyboard, touch and assistive-tech\nscrolling stay the platform's, and ScrollRailController keeps the\nrail in sync while driving the classic interactions (thumb drag, trough\npaging, arrow stepping with auto-repeat). Every engine renders the same\nrail — there is no Firefox fallback skin anymore.\n\nEach reserved scroll rail is a permanent placeholder: arrow buttons on an\nempty white channel sit in the gutter even when the content fits, the\ndither and thumb filling in only once that axis overflows (System 7 drew\nan active window's no-overflow bar as arrows on a bare channel; driven\nby ScrollStateController). Which rails are reserved is set by\naxis; when both are reserved the bottom-right corner joins them,\nand corner reserves that cell on a single-axis rail too — the\nrail stops 15px short of the frame, for a grow box to land in.\n\nSize the host (width/height) from the outside; the viewport fills it
|
|
2452
|
+
"description": "`<vf-scroll-area>` — a container whose scrollbars look like System 7.\n\nWhite box with a 1px black frame, an inner scrolling viewport, and scroll\nrails the kit draws itself as shadow DOM (the shared `vfScrollRail` recipe):\nboxed arrow buttons at each end, a loose 1-bit dot-dither trough, and the\nclassic fixed 16px thumb. The native scrollbar is hidden, never the native\nscrolling — wheel, trackpad momentum, keyboard, touch and assistive-tech\nscrolling stay the platform's, and ScrollRailController keeps the\nrail in sync while driving the classic interactions (thumb drag, trough\npaging, arrow stepping with auto-repeat). Every engine renders the same\nrail — there is no Firefox fallback skin anymore.\n\nEach reserved scroll rail is a permanent placeholder: arrow buttons on an\nempty white channel sit in the gutter even when the content fits, the\ndither and thumb filling in only once that axis overflows (System 7 drew\nan active window's no-overflow bar as arrows on a bare channel; driven\nby ScrollStateController). Which rails are reserved is set by\naxis; when both are reserved the bottom-right corner joins them,\nand corner reserves that cell on a single-axis rail too — the\nrail stops 15px short of the frame, for a grow box to land in.\n\nSize the host (width/height) from the outside; the viewport fills it.\nContent runs to the frame and the rails — the area adds no inset of its\nown; an inset is the content's (a `vf-stack pad`).\n\nThe scrolled plane sizes to its content — never narrower than the\nviewport, as wide as content that cannot wrap — so the rails follow a row\nthat grows sideways the way they follow copy that grows down, and a\n`slotchange` re-measures. measure covers a scroll range that\nchanges with no box changing (a placed child moved through `top`/`left`).\n---\n\n\n### **Slots:**\n - _default_ - Scrollable content.\n\n### **CSS Properties:**\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 - **viewport** - The inner scrolling container.",
|
|
2243
2453
|
"doc-url": "",
|
|
2244
2454
|
"attributes": [
|
|
2245
2455
|
{
|
|
@@ -2250,11 +2460,6 @@
|
|
|
2250
2460
|
"default": "'vertical'"
|
|
2251
2461
|
}
|
|
2252
2462
|
},
|
|
2253
|
-
{
|
|
2254
|
-
"name": "flush",
|
|
2255
|
-
"description": "Drop the viewport's 8px inset: slotted content and the (0,0) of placed\nchildren sit at the frame's inner edge, one system px from the frame\nbox (the border-floor compensation stays — see the viewport rule).\n`vf-window[scrollbars]` forwards its own `flush` here.",
|
|
2256
|
-
"value": { "type": "boolean", "default": "false" }
|
|
2257
|
-
},
|
|
2258
2463
|
{
|
|
2259
2464
|
"name": "corner",
|
|
2260
2465
|
"description": "Reserve the bottom-right corner cell on a single-axis rail: the rail\nstops 15px short of the frame and the viewport spans the rest, leaving\nthe 15×15 cell — with the two dividers a `both` rail's corner carries —\nfor a grow box to land in. A `both` rail always has the cell, so the\nflag changes nothing there. `vf-window[scrollbars resizable]` sets it.",
|
|
@@ -2274,6 +2479,11 @@
|
|
|
2274
2479
|
"name": "left",
|
|
2275
2480
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2276
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" }
|
|
2277
2487
|
}
|
|
2278
2488
|
],
|
|
2279
2489
|
"slots": [{ "name": "", "description": "Scrollable content." }],
|
|
@@ -2285,11 +2495,6 @@
|
|
|
2285
2495
|
"description": "Which scroll rails to reserve as permanent placeholders: `vertical`\n(default), `horizontal`, or `both`. Each reserved rail shows an empty white\nchannel until its axis overflows; the unreserved axis still scrolls\nnatively (wheel, keyboard) but draws no rail.",
|
|
2286
2496
|
"type": "'vertical' | 'horizontal' | 'both'"
|
|
2287
2497
|
},
|
|
2288
|
-
{
|
|
2289
|
-
"name": "flush",
|
|
2290
|
-
"description": "Drop the viewport's 8px inset: slotted content and the (0,0) of placed\nchildren sit at the frame's inner edge, one system px from the frame\nbox (the border-floor compensation stays — see the viewport rule).\n`vf-window[scrollbars]` forwards its own `flush` here.",
|
|
2291
|
-
"type": "boolean"
|
|
2292
|
-
},
|
|
2293
2498
|
{
|
|
2294
2499
|
"name": "corner",
|
|
2295
2500
|
"description": "Reserve the bottom-right corner cell on a single-axis rail: the rail\nstops 15px short of the frame and the viewport spans the rest, leaving\nthe 15×15 cell — with the two dividers a `both` rail's corner carries —\nfor a grow box to land in. A `both` rail always has the cell, so the\nflag changes nothing there. `vf-window[scrollbars resizable]` sets it.",
|
|
@@ -2309,6 +2514,11 @@
|
|
|
2309
2514
|
"name": "left",
|
|
2310
2515
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2311
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"
|
|
2312
2522
|
}
|
|
2313
2523
|
],
|
|
2314
2524
|
"events": []
|
|
@@ -2344,6 +2554,11 @@
|
|
|
2344
2554
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2345
2555
|
"value": { "type": "number | null | undefined" }
|
|
2346
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
|
+
},
|
|
2347
2562
|
{
|
|
2348
2563
|
"name": "description",
|
|
2349
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.",
|
|
@@ -2402,6 +2617,11 @@
|
|
|
2402
2617
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2403
2618
|
"type": "number | null | undefined"
|
|
2404
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
|
+
},
|
|
2405
2625
|
{
|
|
2406
2626
|
"name": "description",
|
|
2407
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.",
|
|
@@ -2473,6 +2693,11 @@
|
|
|
2473
2693
|
"name": "left",
|
|
2474
2694
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2475
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" }
|
|
2476
2701
|
}
|
|
2477
2702
|
],
|
|
2478
2703
|
"events": [],
|
|
@@ -2493,6 +2718,11 @@
|
|
|
2493
2718
|
"name": "left",
|
|
2494
2719
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2495
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"
|
|
2496
2726
|
}
|
|
2497
2727
|
],
|
|
2498
2728
|
"events": []
|
|
@@ -2543,6 +2773,11 @@
|
|
|
2543
2773
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2544
2774
|
"value": { "type": "number | null | undefined" }
|
|
2545
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
|
+
},
|
|
2546
2781
|
{
|
|
2547
2782
|
"name": "disabled",
|
|
2548
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).",
|
|
@@ -2616,6 +2851,11 @@
|
|
|
2616
2851
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2617
2852
|
"type": "number | null | undefined"
|
|
2618
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
|
+
},
|
|
2619
2859
|
{
|
|
2620
2860
|
"name": "disabled",
|
|
2621
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).",
|
|
@@ -2711,6 +2951,11 @@
|
|
|
2711
2951
|
"name": "left",
|
|
2712
2952
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2713
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" }
|
|
2714
2959
|
}
|
|
2715
2960
|
],
|
|
2716
2961
|
"slots": [
|
|
@@ -2761,6 +3006,11 @@
|
|
|
2761
3006
|
"name": "left",
|
|
2762
3007
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2763
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"
|
|
2764
3014
|
}
|
|
2765
3015
|
],
|
|
2766
3016
|
"events": []
|
|
@@ -2811,6 +3061,11 @@
|
|
|
2811
3061
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2812
3062
|
"value": { "type": "number | null | undefined" }
|
|
2813
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
|
+
},
|
|
2814
3069
|
{
|
|
2815
3070
|
"name": "description",
|
|
2816
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.",
|
|
@@ -2865,6 +3120,11 @@
|
|
|
2865
3120
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2866
3121
|
"type": "number | null | undefined"
|
|
2867
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
|
+
},
|
|
2868
3128
|
{
|
|
2869
3129
|
"name": "description",
|
|
2870
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.",
|
|
@@ -2919,6 +3179,11 @@
|
|
|
2919
3179
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2920
3180
|
"value": { "type": "number | null | undefined" }
|
|
2921
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
|
+
},
|
|
2922
3187
|
{
|
|
2923
3188
|
"name": "value",
|
|
2924
3189
|
"description": "Current value. Synced on every keystroke and submitted with forms.",
|
|
@@ -2995,6 +3260,11 @@
|
|
|
2995
3260
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
2996
3261
|
"type": "number | null | undefined"
|
|
2997
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
|
+
},
|
|
2998
3268
|
{
|
|
2999
3269
|
"name": "value",
|
|
3000
3270
|
"description": "Current value. Synced on every keystroke and submitted with forms.",
|
|
@@ -3096,6 +3366,11 @@
|
|
|
3096
3366
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
3097
3367
|
"value": { "type": "number | null | undefined" }
|
|
3098
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
|
+
},
|
|
3099
3374
|
{
|
|
3100
3375
|
"name": "value",
|
|
3101
3376
|
"description": "Current value. Synced on every keystroke and submitted with forms.",
|
|
@@ -3172,6 +3447,11 @@
|
|
|
3172
3447
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
3173
3448
|
"type": "number | null | undefined"
|
|
3174
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
|
+
},
|
|
3175
3455
|
{
|
|
3176
3456
|
"name": "value",
|
|
3177
3457
|
"description": "Current value. Synced on every keystroke and submitted with forms.",
|
|
@@ -3255,7 +3535,7 @@
|
|
|
3255
3535
|
},
|
|
3256
3536
|
{
|
|
3257
3537
|
"name": "vf-window",
|
|
3258
|
-
"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).",
|
|
3259
3539
|
"doc-url": "",
|
|
3260
3540
|
"attributes": [
|
|
3261
3541
|
{
|
|
@@ -3313,18 +3593,18 @@
|
|
|
3313
3593
|
"description": "See minWidth. Unbounded by default.",
|
|
3314
3594
|
"value": { "type": "number | null | undefined" }
|
|
3315
3595
|
},
|
|
3316
|
-
{
|
|
3317
|
-
"name": "flush",
|
|
3318
|
-
"description": "Remove the default 12px body padding. Under `scrollbars` the body has\nnone to remove, so the flag reaches the built-in scroll area instead\nand drops its viewport's 8px inset: content runs to the frame and the\nrails, and the (0,0) of placed children is the content region's corner.",
|
|
3319
|
-
"value": { "type": "boolean", "default": "false" }
|
|
3320
|
-
},
|
|
3321
3596
|
{
|
|
3322
3597
|
"name": "scrollbars",
|
|
3323
|
-
"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.\
|
|
3598
|
+
"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.",
|
|
3324
3599
|
"value": {
|
|
3325
3600
|
"type": "'vertical' | 'horizontal' | 'both' | undefined"
|
|
3326
3601
|
}
|
|
3327
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
|
+
},
|
|
3328
3608
|
{
|
|
3329
3609
|
"name": "width",
|
|
3330
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.",
|
|
@@ -3344,10 +3624,19 @@
|
|
|
3344
3624
|
"name": "left",
|
|
3345
3625
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
3346
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" }
|
|
3347
3632
|
}
|
|
3348
3633
|
],
|
|
3349
3634
|
"slots": [
|
|
3350
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
|
+
},
|
|
3351
3640
|
{
|
|
3352
3641
|
"name": "status",
|
|
3353
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."
|
|
@@ -3424,16 +3713,16 @@
|
|
|
3424
3713
|
"description": "See minWidth. Unbounded by default.",
|
|
3425
3714
|
"type": "number | null | undefined"
|
|
3426
3715
|
},
|
|
3427
|
-
{
|
|
3428
|
-
"name": "flush",
|
|
3429
|
-
"description": "Remove the default 12px body padding. Under `scrollbars` the body has\nnone to remove, so the flag reaches the built-in scroll area instead\nand drops its viewport's 8px inset: content runs to the frame and the\nrails, and the (0,0) of placed children is the content region's corner.",
|
|
3430
|
-
"type": "boolean"
|
|
3431
|
-
},
|
|
3432
3716
|
{
|
|
3433
3717
|
"name": "scrollbars",
|
|
3434
|
-
"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.\
|
|
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.",
|
|
3435
3719
|
"type": "'vertical' | 'horizontal' | 'both' | undefined"
|
|
3436
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
|
+
},
|
|
3437
3726
|
{
|
|
3438
3727
|
"name": "width",
|
|
3439
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.",
|
|
@@ -3453,6 +3742,11 @@
|
|
|
3453
3742
|
"name": "left",
|
|
3454
3743
|
"description": "Offset from the left of the positioning parent, in whole system px.\nSee top.",
|
|
3455
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"
|
|
3456
3750
|
}
|
|
3457
3751
|
],
|
|
3458
3752
|
"events": [
|