@optionfactory/fml 9.0.0-rc1 → 9.0.0-rc11

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.
@@ -1,22 +1,38 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@optionfactory/fml",
4
- "version": "9.0.0-rc1",
4
+ "version": "9.0.0-rc11",
5
5
  "description-markup": "none",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "elements": [
9
9
  {
10
10
  "name": "ful-tooltip",
11
- "description": "An info affordance: a themed icon button toggling a small popover with a short explanation, opened by click and by keyboard like a button, dismissed by Escape or an outside click. placement picks the side the note sits on: bottom (default), top, left or right.",
11
+ "description": "An info affordance: a themed icon button toggling a small popover with a short explanation, opened by click and by keyboard like a button, dismissed by Escape or an outside click. placement picks the side the note sits on: top (default), bottom, left or right.",
12
12
  "attributes": [
13
13
  {
14
14
  "name": "placement",
15
- "description": "Which side of the trigger the note opens on: bottom (the default), top, start or end. The library places the note itself on every platform, so the side is the same everywhere.",
15
+ "description": "Which side of the trigger the note opens on: top (the default), bottom, left or right. Above by default because a note opening downwards covers the control the marker explains. The library places the note itself on every platform, so the side is the same everywhere.",
16
16
  "value": {
17
17
  "kind": "plain",
18
18
  "type": "string"
19
19
  }
20
+ },
21
+ {
22
+ "name": "icon",
23
+ "description": "The ful-icon the marker shows, for a tooltip meaning something other than plain information. Defaults to the page's Tooltip.config.icon; a name the library does not paint is declared by the page as ful-icon[name='...'] { mask-image: ... }.",
24
+ "value": {
25
+ "kind": "plain",
26
+ "type": "string"
27
+ }
28
+ },
29
+ {
30
+ "name": "describes",
31
+ "description": "For a tooltip standing in a field: the note joins the accessible description of that field's control, announced on reaching the field rather than only on opening the marker, and the marker leaves the tab order so a form of hinted fields costs no extra keystrokes to walk. The marker stays clickable, and keeps its tab stop wherever nothing took the note.",
32
+ "value": {
33
+ "kind": "plain",
34
+ "type": "boolean"
35
+ }
20
36
  }
21
37
  ],
22
38
  "slots": [
@@ -29,7 +45,7 @@
29
45
  },
30
46
  {
31
47
  "name": "ful-dialog",
32
- "description": "A modal dialog on the native platform: header, body and buttons, the header attribute naming its heading, opened by any element carrying dialog-target set to its id, or programmatically through open()/ask(), which resolve with the data-result of the button that closed the dialog (null on Escape). Longer explanations belong here, shorter ones in ful-tooltip.",
48
+ "description": "A modal dialog on the native platform: header, body and buttons, the header attribute naming its heading, opened by any element carrying dialog-target set to its id, or programmatically through open()/ask(), which answer with how the dialog ended, or through update(callback), which opens it on a loading state and then shows either what the callback delivered or the problems of a rejection. Longer explanations belong here, shorter ones in ful-tooltip.",
33
49
  "attributes": [
34
50
  {
35
51
  "name": "header",
@@ -38,22 +54,42 @@
38
54
  "kind": "plain",
39
55
  "type": "string"
40
56
  }
57
+ },
58
+ {
59
+ "name": "requires-answer",
60
+ "description": "For the dialog that must be answered: the close button is not rendered and Escape is refused, so the only way out is a button carrying a result. Both, since a close button withheld while Escape still worked would be decoration rather than a rule.",
61
+ "value": {
62
+ "kind": "plain",
63
+ "type": "boolean"
64
+ }
65
+ },
66
+ {
67
+ "name": "close-on-submit",
68
+ "description": "For the dialog whose answer is a form succeeding rather than a button being pressed: its own form submitting successfully closes it and answers with the response. Opt in, and its own form only, a ful-form the body holds directly, since a ful-table wraps its filters in a form of its own and searching one is not the dialog being answered. Such a dialog renders no acknowledge button of its own, the form's submit being its answer.",
69
+ "value": {
70
+ "kind": "plain",
71
+ "type": "boolean"
72
+ }
41
73
  }
42
74
  ],
43
75
  "slots": [
76
+ {
77
+ "name": "header",
78
+ "description": "Content beside the title and before it: an icon, a badge, a status. It sits outside the heading rather than in it, the header attribute setting the heading through text."
79
+ },
44
80
  {
45
81
  "name": "default",
46
82
  "description": "The dialog body."
47
83
  },
48
84
  {
49
85
  "name": "buttons",
50
- "description": "Buttons closing the dialog; each carries a data-result that ask() resolves with. Without this slot a localized acknowledge button is shown."
86
+ "description": "Buttons closing the dialog; each carries a data-result that the answer carries back. Without this slot a localized acknowledge button is shown. A dialog closing on its form renders none either way, so the slot is for buttons beside the form, not for suppressing one."
51
87
  }
52
88
  ],
53
89
  "events": [
54
90
  {
55
91
  "name": "close",
56
- "description": "Fired when the dialog closes, carrying the data-result of the button that closed it, or null on Escape; ask() and open() resolve with the same answer, and a dialog leaving the document while open answers its waiters with null."
92
+ "description": "Fired when the dialog closes, carrying how it ended: dismissed tells a cancel from an answer, result the data-result of the button that closed it, response what a submit answered with. ask() and open() resolve with the same object, and a dialog leaving the document while open answers its waiters with a dismissal."
57
93
  },
58
94
  {
59
95
  "name": "section:requested",
@@ -80,9 +116,21 @@
80
116
  "kind": "plain",
81
117
  "type": "string"
82
118
  }
119
+ },
120
+ {
121
+ "name": "close-on-submit",
122
+ "description": "For the drawer whose ending is a form succeeding rather than its close button being pressed: the form its content holds directly submitting successfully closes it, the close event carrying the response. Opt in, and its own form only, since a ful-table wraps its filters in a form of its own and searching one is not the drawer finishing.",
123
+ "value": {
124
+ "kind": "plain",
125
+ "type": "boolean"
126
+ }
83
127
  }
84
128
  ],
85
129
  "slots": [
130
+ {
131
+ "name": "header",
132
+ "description": "Content beside the title and before it: an icon, a badge, a status. It sits outside the heading rather than in it, update() setting the title through textContent and taking anything nested there with it."
133
+ },
86
134
  {
87
135
  "name": "default",
88
136
  "description": "The drawer body, shown when update() never replaced it."
@@ -91,7 +139,7 @@
91
139
  "events": [
92
140
  {
93
141
  "name": "close",
94
- "description": "Fired when the drawer closes, by its close button or Escape."
142
+ "description": "Fired when the drawer closes, carrying how it ended: dismissed tells the close button and Escape from a form that closed it under close-on-submit, and response what that submit answered with, a save answering with no body at all being a save all the same."
95
143
  },
96
144
  {
97
145
  "name": "section:requested",
@@ -263,6 +311,14 @@
263
311
  "kind": "plain",
264
312
  "type": "boolean"
265
313
  }
314
+ },
315
+ {
316
+ "name": "autocomplete",
317
+ "description": "The autofill token every field in the form takes unless it declares one of its own, copied onto the form element the host renders. A form cannot pass it down the way the platform would: each control carries form=\"\" so that the host is the only thing that submits, which leaves it with no form owner to inherit through, so the fields read it off the form instead.",
318
+ "value": {
319
+ "kind": "plain",
320
+ "type": "string"
321
+ }
266
322
  }
267
323
  ],
268
324
  "slots": [],
@@ -349,11 +405,11 @@
349
405
  },
350
406
  {
351
407
  "name": "ful-input",
352
- "description": "A labelled text input. Use type to pick any native input type, or textarea; keep names the characters that survive a keystroke and reject the ones that do not, the caret staying among the survivors, and the uppercase and trim claims shape the value before it is read; v-type=number decodes the value to a number, blank staying null and a value that does not decode kept as it is, an undeclared type defaulting to number. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
408
+ "description": "A labelled text input. Use type to pick any native input type, the keypad types numeric and decimal, or textarea; keep names the characters that survive a keystroke and reject the ones that do not, the caret staying among the survivors, and the uppercase and trim claims shape the value before it is read; v-type=number decodes the value to a number, blank staying null and a value that does not decode kept as it is, an undeclared type defaulting to number. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
353
409
  "attributes": [
354
410
  {
355
411
  "name": "type",
356
- "description": "Any native input type, or the literal textarea to render one. Defaults to number under v-type=number, and a declared type wins.",
412
+ "description": "Any native input type, the literal textarea to render one, or numeric and decimal, which render a text input carrying that inputmode and filter what can be typed: numeric takes digits and a leading minus, decimal one separator as well, answering it as a dot whatever the keyboard offered. Neither enforces min, max or step, which the native number type still does. Defaults to number under v-type=number, and a declared type wins.",
357
413
  "value": {
358
414
  "kind": "plain",
359
415
  "type": "string"
@@ -399,6 +455,14 @@
399
455
  "type": "boolean"
400
456
  }
401
457
  },
458
+ {
459
+ "name": "autocomplete",
460
+ "description": "The autofill token the browser classifies the control by, one of the names the html autocomplete grammar defines (name, given-name, street-address, postal-code, one-time-code, off, ...). It is set on the control itself because the control carries form=\"\", which leaves it without a form owner to inherit a form-wide setting from. Read once at the upgrade. A value outside the grammar reads as on, so an identifier of your own does not switch autofill off.",
461
+ "value": {
462
+ "kind": "plain",
463
+ "type": "string"
464
+ }
465
+ },
402
466
  {
403
467
  "name": "disabled",
404
468
  "description": "The field's own disabled claim: the control is disabled and the field is left out of the submitted values, composed with a disabled fieldset ancestry. The property reflects the claim only, matches(':disabled') tells the effective state.",
@@ -471,7 +535,7 @@
471
535
  "attributes": [
472
536
  {
473
537
  "name": "type",
474
- "description": "Any native input type, or the literal textarea to render one. Defaults to number under v-type=number, and a declared type wins.",
538
+ "description": "Any native input type, the literal textarea to render one, or numeric and decimal, which render a text input carrying that inputmode and filter what can be typed: numeric takes digits and a leading minus, decimal one separator as well, answering it as a dot whatever the keyboard offered. Neither enforces min, max or step, which the native number type still does. Defaults to number under v-type=number, and a declared type wins.",
475
539
  "value": {
476
540
  "kind": "plain",
477
541
  "type": "string"
@@ -517,6 +581,14 @@
517
581
  "type": "boolean"
518
582
  }
519
583
  },
584
+ {
585
+ "name": "autocomplete",
586
+ "description": "The autofill token the browser classifies the control by, one of the names the html autocomplete grammar defines (name, given-name, street-address, postal-code, one-time-code, off, ...). It is set on the control itself because the control carries form=\"\", which leaves it without a form owner to inherit a form-wide setting from. Read once at the upgrade. A value outside the grammar reads as on, so an identifier of your own does not switch autofill off.",
587
+ "value": {
588
+ "kind": "plain",
589
+ "type": "string"
590
+ }
591
+ },
520
592
  {
521
593
  "name": "disabled",
522
594
  "description": "The field's own disabled claim: the control is disabled and the field is left out of the submitted values, composed with a disabled fieldset ancestry. The property reflects the claim only, matches(':disabled') tells the effective state.",
@@ -697,7 +769,7 @@
697
769
  "attributes": [
698
770
  {
699
771
  "name": "type",
700
- "description": "Any native input type, or the literal textarea to render one. Defaults to number under v-type=number, and a declared type wins.",
772
+ "description": "Any native input type, the literal textarea to render one, or numeric and decimal, which render a text input carrying that inputmode and filter what can be typed: numeric takes digits and a leading minus, decimal one separator as well, answering it as a dot whatever the keyboard offered. Neither enforces min, max or step, which the native number type still does. Defaults to number under v-type=number, and a declared type wins.",
701
773
  "value": {
702
774
  "kind": "plain",
703
775
  "type": "string"
@@ -743,6 +815,14 @@
743
815
  "type": "boolean"
744
816
  }
745
817
  },
818
+ {
819
+ "name": "autocomplete",
820
+ "description": "The autofill token the browser classifies the control by, one of the names the html autocomplete grammar defines (name, given-name, street-address, postal-code, one-time-code, off, ...). It is set on the control itself because the control carries form=\"\", which leaves it without a form owner to inherit a form-wide setting from. Read once at the upgrade. A value outside the grammar reads as on, so an identifier of your own does not switch autofill off.",
821
+ "value": {
822
+ "kind": "plain",
823
+ "type": "string"
824
+ }
825
+ },
746
826
  {
747
827
  "name": "disabled",
748
828
  "description": "The field's own disabled claim: the control is disabled and the field is left out of the submitted values, composed with a disabled fieldset ancestry. The property reflects the claim only, matches(':disabled') tells the effective state.",
@@ -839,7 +919,7 @@
839
919
  "attributes": [
840
920
  {
841
921
  "name": "type",
842
- "description": "Any native input type, or the literal textarea to render one. Defaults to number under v-type=number, and a declared type wins.",
922
+ "description": "Any native input type, the literal textarea to render one, or numeric and decimal, which render a text input carrying that inputmode and filter what can be typed: numeric takes digits and a leading minus, decimal one separator as well, answering it as a dot whatever the keyboard offered. Neither enforces min, max or step, which the native number type still does. Defaults to number under v-type=number, and a declared type wins.",
843
923
  "value": {
844
924
  "kind": "plain",
845
925
  "type": "string"
@@ -885,6 +965,14 @@
885
965
  "type": "boolean"
886
966
  }
887
967
  },
968
+ {
969
+ "name": "autocomplete",
970
+ "description": "The autofill token the browser classifies the control by, one of the names the html autocomplete grammar defines (name, given-name, street-address, postal-code, one-time-code, off, ...). It is set on the control itself because the control carries form=\"\", which leaves it without a form owner to inherit a form-wide setting from. Read once at the upgrade. A value outside the grammar reads as on, so an identifier of your own does not switch autofill off.",
971
+ "value": {
972
+ "kind": "plain",
973
+ "type": "string"
974
+ }
975
+ },
888
976
  {
889
977
  "name": "disabled",
890
978
  "description": "The field's own disabled claim: the control is disabled and the field is left out of the submitted values, composed with a disabled fieldset ancestry. The property reflects the claim only, matches(':disabled') tells the effective state.",
@@ -981,7 +1069,7 @@
981
1069
  "attributes": [
982
1070
  {
983
1071
  "name": "type",
984
- "description": "Any native input type, or the literal textarea to render one. Defaults to number under v-type=number, and a declared type wins.",
1072
+ "description": "Any native input type, the literal textarea to render one, or numeric and decimal, which render a text input carrying that inputmode and filter what can be typed: numeric takes digits and a leading minus, decimal one separator as well, answering it as a dot whatever the keyboard offered. Neither enforces min, max or step, which the native number type still does. Defaults to number under v-type=number, and a declared type wins.",
985
1073
  "value": {
986
1074
  "kind": "plain",
987
1075
  "type": "string"
@@ -1027,6 +1115,14 @@
1027
1115
  "type": "boolean"
1028
1116
  }
1029
1117
  },
1118
+ {
1119
+ "name": "autocomplete",
1120
+ "description": "The autofill token the browser classifies the control by, one of the names the html autocomplete grammar defines (name, given-name, street-address, postal-code, one-time-code, off, ...). It is set on the control itself because the control carries form=\"\", which leaves it without a form owner to inherit a form-wide setting from. Read once at the upgrade. A value outside the grammar reads as on, so an identifier of your own does not switch autofill off.",
1121
+ "value": {
1122
+ "kind": "plain",
1123
+ "type": "string"
1124
+ }
1125
+ },
1030
1126
  {
1031
1127
  "name": "disabled",
1032
1128
  "description": "The field's own disabled claim: the control is disabled and the field is left out of the submitted values, composed with a disabled fieldset ancestry. The property reflects the claim only, matches(':disabled') tells the effective state.",
@@ -1229,12 +1325,25 @@
1229
1325
  "name": "caption",
1230
1326
  "description": "The caption of the table."
1231
1327
  },
1328
+ {
1329
+ "name": "empty",
1330
+ "description": "Shown in place of the rows when a load returns none, replacing the localized default message."
1331
+ },
1232
1332
  {
1233
1333
  "name": "footer",
1234
1334
  "description": "Content rendered in the table footer."
1235
1335
  }
1236
1336
  ],
1237
- "events": []
1337
+ "events": [
1338
+ {
1339
+ "name": "load:success",
1340
+ "description": "Fired once a load has settled, after the rows are in place and the busy state is gone, carrying the page response and the three requests that asked for it. Not fired for a load a newer one superseded, which owns nothing."
1341
+ },
1342
+ {
1343
+ "name": "load:failure",
1344
+ "description": "Fired when a load rejects, after the error row is shown, carrying the exception and the three requests. Telling this from an empty result is what the aria-busy attribute alone cannot do."
1345
+ }
1346
+ ]
1238
1347
  },
1239
1348
  {
1240
1349
  "name": "ful-pagination",
@@ -1308,7 +1417,7 @@
1308
1417
  "attributes": [
1309
1418
  {
1310
1419
  "name": "type",
1311
- "description": "Any native input type, or the literal textarea to render one. Defaults to number under v-type=number, and a declared type wins.",
1420
+ "description": "Any native input type, the literal textarea to render one, or numeric and decimal, which render a text input carrying that inputmode and filter what can be typed: numeric takes digits and a leading minus, decimal one separator as well, answering it as a dot whatever the keyboard offered. Neither enforces min, max or step, which the native number type still does. Defaults to number under v-type=number, and a declared type wins.",
1312
1421
  "value": {
1313
1422
  "kind": "plain",
1314
1423
  "type": "string"
@@ -1354,6 +1463,14 @@
1354
1463
  "type": "boolean"
1355
1464
  }
1356
1465
  },
1466
+ {
1467
+ "name": "autocomplete",
1468
+ "description": "The autofill token the browser classifies the control by, one of the names the html autocomplete grammar defines (name, given-name, street-address, postal-code, one-time-code, off, ...). It is set on the control itself because the control carries form=\"\", which leaves it without a form owner to inherit a form-wide setting from. Read once at the upgrade. A value outside the grammar reads as on, so an identifier of your own does not switch autofill off.",
1469
+ "value": {
1470
+ "kind": "plain",
1471
+ "type": "string"
1472
+ }
1473
+ },
1357
1474
  {
1358
1475
  "name": "disabled",
1359
1476
  "description": "The field's own disabled claim: the control is disabled and the field is left out of the submitted values, composed with a disabled fieldset ancestry. The property reflects the claim only, matches(':disabled') tells the effective state.",
@@ -1434,7 +1551,7 @@
1434
1551
  "attributes": [
1435
1552
  {
1436
1553
  "name": "type",
1437
- "description": "Any native input type, or the literal textarea to render one. Defaults to number under v-type=number, and a declared type wins.",
1554
+ "description": "Any native input type, the literal textarea to render one, or numeric and decimal, which render a text input carrying that inputmode and filter what can be typed: numeric takes digits and a leading minus, decimal one separator as well, answering it as a dot whatever the keyboard offered. Neither enforces min, max or step, which the native number type still does. Defaults to number under v-type=number, and a declared type wins.",
1438
1555
  "value": {
1439
1556
  "kind": "plain",
1440
1557
  "type": "string"
@@ -1480,6 +1597,14 @@
1480
1597
  "type": "boolean"
1481
1598
  }
1482
1599
  },
1600
+ {
1601
+ "name": "autocomplete",
1602
+ "description": "The autofill token the browser classifies the control by, one of the names the html autocomplete grammar defines (name, given-name, street-address, postal-code, one-time-code, off, ...). It is set on the control itself because the control carries form=\"\", which leaves it without a form owner to inherit a form-wide setting from. Read once at the upgrade. A value outside the grammar reads as on, so an identifier of your own does not switch autofill off.",
1603
+ "value": {
1604
+ "kind": "plain",
1605
+ "type": "string"
1606
+ }
1607
+ },
1483
1608
  {
1484
1609
  "name": "disabled",
1485
1610
  "description": "The field's own disabled claim: the control is disabled and the field is left out of the submitted values, composed with a disabled fieldset ancestry. The property reflects the claim only, matches(':disabled') tells the effective state.",
@@ -1560,7 +1685,7 @@
1560
1685
  "attributes": [
1561
1686
  {
1562
1687
  "name": "type",
1563
- "description": "Any native input type, or the literal textarea to render one. Defaults to number under v-type=number, and a declared type wins.",
1688
+ "description": "Any native input type, the literal textarea to render one, or numeric and decimal, which render a text input carrying that inputmode and filter what can be typed: numeric takes digits and a leading minus, decimal one separator as well, answering it as a dot whatever the keyboard offered. Neither enforces min, max or step, which the native number type still does. Defaults to number under v-type=number, and a declared type wins.",
1564
1689
  "value": {
1565
1690
  "kind": "plain",
1566
1691
  "type": "string"
@@ -1606,6 +1731,14 @@
1606
1731
  "type": "boolean"
1607
1732
  }
1608
1733
  },
1734
+ {
1735
+ "name": "autocomplete",
1736
+ "description": "The autofill token the browser classifies the control by, one of the names the html autocomplete grammar defines (name, given-name, street-address, postal-code, one-time-code, off, ...). It is set on the control itself because the control carries form=\"\", which leaves it without a form owner to inherit a form-wide setting from. Read once at the upgrade. A value outside the grammar reads as on, so an identifier of your own does not switch autofill off.",
1737
+ "value": {
1738
+ "kind": "plain",
1739
+ "type": "string"
1740
+ }
1741
+ },
1609
1742
  {
1610
1743
  "name": "disabled",
1611
1744
  "description": "The field's own disabled claim: the control is disabled and the field is left out of the submitted values, composed with a disabled fieldset ancestry. The property reflects the claim only, matches(':disabled') tells the effective state.",
@@ -1752,11 +1885,11 @@
1752
1885
  },
1753
1886
  {
1754
1887
  "name": "ful-filter-text",
1755
- "description": "A ful-table filter over text, with an operator such as CONTAINS or STARTS_WITH and a case sensitivity. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only. A multiple ful-select used as a filter emits the bare value array the in-list annotations expect.",
1888
+ "description": "A ful-table filter over text, with an operator such as CONTAINS or STARTS_WITH and a case sensitivity. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
1756
1889
  "attributes": [
1757
1890
  {
1758
1891
  "name": "type",
1759
- "description": "Any native input type, or the literal textarea to render one. Defaults to number under v-type=number, and a declared type wins.",
1892
+ "description": "Any native input type, the literal textarea to render one, or numeric and decimal, which render a text input carrying that inputmode and filter what can be typed: numeric takes digits and a leading minus, decimal one separator as well, answering it as a dot whatever the keyboard offered. Neither enforces min, max or step, which the native number type still does. Defaults to number under v-type=number, and a declared type wins.",
1760
1893
  "value": {
1761
1894
  "kind": "plain",
1762
1895
  "type": "string"
@@ -1802,6 +1935,14 @@
1802
1935
  "type": "boolean"
1803
1936
  }
1804
1937
  },
1938
+ {
1939
+ "name": "autocomplete",
1940
+ "description": "The autofill token the browser classifies the control by, one of the names the html autocomplete grammar defines (name, given-name, street-address, postal-code, one-time-code, off, ...). It is set on the control itself because the control carries form=\"\", which leaves it without a form owner to inherit a form-wide setting from. Read once at the upgrade. A value outside the grammar reads as on, so an identifier of your own does not switch autofill off.",
1941
+ "value": {
1942
+ "kind": "plain",
1943
+ "type": "string"
1944
+ }
1945
+ },
1805
1946
  {
1806
1947
  "name": "disabled",
1807
1948
  "description": "The field's own disabled claim: the control is disabled and the field is left out of the submitted values, composed with a disabled fieldset ancestry. The property reflects the claim only, matches(':disabled') tells the effective state.",
@@ -1884,6 +2025,192 @@
1884
2025
  }
1885
2026
  ]
1886
2027
  },
2028
+ {
2029
+ "name": "ful-filter-in",
2030
+ "description": "A ful-table filter over set membership, answering for both of data-jpa's set annotations: InEnum and InList take the same array of values and no operator, differing only in what the server converts them to. The vocabulary comes from wherever a select's does, slotted options or a loader, and the selection is always multiple, an empty one contributing nothing rather than an empty array.",
2031
+ "attributes": [
2032
+ {
2033
+ "name": "name",
2034
+ "description": "The field name the surrounding form submits the selection under.",
2035
+ "value": {
2036
+ "kind": "plain",
2037
+ "type": "string"
2038
+ }
2039
+ },
2040
+ {
2041
+ "name": "loader",
2042
+ "description": "The registered component name the select loads its vocabulary through; loaders:select when absent.",
2043
+ "value": {
2044
+ "kind": "plain",
2045
+ "type": "string"
2046
+ }
2047
+ },
2048
+ {
2049
+ "name": "k-type",
2050
+ "description": "How a key coerces when it arrives from the response or from the value attribute: number, string or bool.",
2051
+ "value": {
2052
+ "kind": "plain",
2053
+ "type": "string"
2054
+ }
2055
+ },
2056
+ {
2057
+ "name": "src",
2058
+ "description": "The url the vocabulary is fetched from. Without it the slotted <option> elements are the whole vocabulary, held in memory.",
2059
+ "value": {
2060
+ "kind": "plain",
2061
+ "type": "string"
2062
+ }
2063
+ },
2064
+ {
2065
+ "name": "method",
2066
+ "description": "The method the vocabulary is fetched with; POST when absent.",
2067
+ "value": {
2068
+ "kind": "plain",
2069
+ "type": "string"
2070
+ }
2071
+ },
2072
+ {
2073
+ "name": "mode",
2074
+ "description": "chunked asks the endpoint per query instead of fetching the vocabulary once, for a list too large to hold.",
2075
+ "value": {
2076
+ "kind": "plain",
2077
+ "type": "string"
2078
+ }
2079
+ },
2080
+ {
2081
+ "name": "preload",
2082
+ "description": "Fetches the vocabulary while the element upgrades rather than on first use. The field paints immediately either way; the options arrive when they arrive.",
2083
+ "value": {
2084
+ "kind": "plain",
2085
+ "type": "boolean"
2086
+ }
2087
+ },
2088
+ {
2089
+ "name": "revision",
2090
+ "description": "Caches the fetched vocabulary in local storage under this revision; a load under a different one is a miss that evicts the entry. It is the cache's namespace, so a vocabulary that differs per user wants the principal in it. Left valueless, the revision the registry's 'revision' component answers is used, so a page states its build once instead of every element repeating it.",
2091
+ "value": {
2092
+ "kind": "plain",
2093
+ "type": "string"
2094
+ }
2095
+ },
2096
+ {
2097
+ "name": "k-expr",
2098
+ "description": "The expression yielding an option's key, evaluated against each row of the response. Set it together with l-expr to shape a response without a mapper component.",
2099
+ "value": {
2100
+ "kind": "plain",
2101
+ "type": "string"
2102
+ }
2103
+ },
2104
+ {
2105
+ "name": "l-expr",
2106
+ "description": "The expression yielding an option's label, evaluated against each row of the response.",
2107
+ "value": {
2108
+ "kind": "plain",
2109
+ "type": "string"
2110
+ }
2111
+ },
2112
+ {
2113
+ "name": "d-expr",
2114
+ "description": "The expression yielding the rows from the response body; the body itself when absent.",
2115
+ "value": {
2116
+ "kind": "plain",
2117
+ "type": "string"
2118
+ }
2119
+ },
2120
+ {
2121
+ "name": "m-expr",
2122
+ "description": "The expression yielding an option's metadata, evaluated against each row; the whole row when absent.",
2123
+ "value": {
2124
+ "kind": "plain",
2125
+ "type": "string"
2126
+ }
2127
+ },
2128
+ {
2129
+ "name": "response-mapper",
2130
+ "description": "The registered component name that turns a response into { key, label, metadata } entries. The k-expr/l-expr pair takes precedence; without either, the response is read as positional rows.",
2131
+ "value": {
2132
+ "kind": "plain",
2133
+ "type": "string"
2134
+ }
2135
+ },
2136
+ {
2137
+ "name": "disabled",
2138
+ "description": "The field's own disabled claim: the control is disabled and the field is left out of the submitted values, composed with a disabled fieldset ancestry. The property reflects the claim only, matches(':disabled') tells the effective state.",
2139
+ "value": {
2140
+ "kind": "plain",
2141
+ "type": "boolean"
2142
+ }
2143
+ },
2144
+ {
2145
+ "name": "readonly",
2146
+ "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
2147
+ "value": {
2148
+ "kind": "plain",
2149
+ "type": "boolean"
2150
+ }
2151
+ },
2152
+ {
2153
+ "name": "required",
2154
+ "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
2155
+ "value": {
2156
+ "kind": "plain",
2157
+ "type": "boolean"
2158
+ }
2159
+ },
2160
+ {
2161
+ "name": "value",
2162
+ "description": "Comma separated list of the selected keys. Empty contributes nothing, so the table drops the filter rather than sending an empty set.",
2163
+ "value": {
2164
+ "kind": "plain",
2165
+ "type": "string"
2166
+ }
2167
+ },
2168
+ {
2169
+ "name": "multiple",
2170
+ "description": "Always on for this element: a set of one is still a set, and a single selection would answer a bare key where the filter request wants an array.",
2171
+ "value": {
2172
+ "kind": "plain",
2173
+ "type": "boolean"
2174
+ }
2175
+ },
2176
+ {
2177
+ "name": "item-list",
2178
+ "description": "Shows the selection as a ful-item-list under the control as well, in addition to the field itself (the label for a single select, the ful-badge chips when multiple).",
2179
+ "value": {
2180
+ "kind": "plain",
2181
+ "type": "boolean"
2182
+ }
2183
+ }
2184
+ ],
2185
+ "slots": [
2186
+ {
2187
+ "name": "default",
2188
+ "description": "The label of the field."
2189
+ },
2190
+ {
2191
+ "name": "info",
2192
+ "description": "Extra content rendered next to the label, for a hint or a help icon."
2193
+ },
2194
+ {
2195
+ "name": "before",
2196
+ "description": "An addon rendered inside the input group, before the control."
2197
+ },
2198
+ {
2199
+ "name": "after",
2200
+ "description": "An addon rendered inside the input group, after the control."
2201
+ },
2202
+ {
2203
+ "name": "dropdown",
2204
+ "description": "Replaces the template used to render the options."
2205
+ }
2206
+ ],
2207
+ "events": [
2208
+ {
2209
+ "name": "change",
2210
+ "description": "Fired with the selected keys, or undefined when nothing is picked."
2211
+ }
2212
+ ]
2213
+ },
1887
2214
  {
1888
2215
  "name": "ful-select",
1889
2216
  "description": "A combobox backed by a loader that acts like a select: the field mirrors the label of a single selection, clicking anywhere on it toggles the dropdown, which opens highlighting the current selection, and Home, End, PageUp, PageDown and Alt+arrows navigate it. A multiple selection renders as ful-badge chips. Without src the slotted options are the vocabulary; with src the options are fetched once (method, POST by default, preload fetching them while upgrading, revision caching them in local storage) or asked per query under mode=chunked, the response shaped through the k-expr/l-expr/d-expr/m-expr expressions or a response-mapper component, and every key coerced as k-type declares. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
@@ -1946,7 +2273,7 @@
1946
2273
  },
1947
2274
  {
1948
2275
  "name": "revision",
1949
- "description": "Caches the fetched vocabulary in local storage under this revision; a load under a different one is a miss that evicts the entry. It is the cache's namespace, so a vocabulary that differs per user wants the principal in it.",
2276
+ "description": "Caches the fetched vocabulary in local storage under this revision; a load under a different one is a miss that evicts the entry. It is the cache's namespace, so a vocabulary that differs per user wants the principal in it. Left valueless, the revision the registry's 'revision' component answers is used, so a page states its build once instead of every element repeating it.",
1950
2277
  "value": {
1951
2278
  "kind": "plain",
1952
2279
  "type": "string"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optionfactory/fml",
3
- "version": "9.0.0-rc1",
3
+ "version": "9.0.0-rc11",
4
4
  "type": "module",
5
5
  "main": "./dist/fml.mjs",
6
6
  "module": "./dist/fml.mjs",