@optionfactory/fml 9.0.0-rc13 → 9.0.0-rc15

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.
@@ -21,7 +21,7 @@
21
21
  },
22
22
  {
23
23
  "name": "ful-dialog",
24
- "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.",
24
+ "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. Dialog.ask(header, body, buttons) and Dialog.confirm(header, body, labels) ask a question in a transient one, building, showing, answering and removing the element themselves; a confirm's cancel, close and Escape all answer the negative.",
25
25
  "attributes": [
26
26
  {
27
27
  "name": "header",
@@ -39,10 +39,10 @@
39
39
  },
40
40
  {
41
41
  "name": "ful-drawer",
42
- "description": "A side panel drawer on the native dialog platform: a header with its title (the title attribute, or update()'s own) and close button, and a body that opens in a loading state, then shows either the content delivered by update(title, callback) (or the slotted one, when it is never updated) or the error a rejecting callback carries. placement picks the side, end by default, start its mirror. Any element carrying dialog-target set to its id opens it too.",
42
+ "description": "A side panel drawer on the native dialog platform: a header with its title (the header attribute, or update()'s own) and close button, and a body that opens in a loading state, then shows either the content delivered by update(header, callback) (or the slotted one, when it is never updated) or the error a rejecting callback carries. placement picks the side, end by default, start its mirror. Any element carrying dialog-target set to its id opens it too.",
43
43
  "attributes": [
44
44
  {
45
- "name": "title",
45
+ "name": "header",
46
46
  "description": "The drawer's title, shown in its header. Text only, and also what update() re-titles the panel with. (string)"
47
47
  },
48
48
  {
@@ -55,9 +55,19 @@
55
55
  }
56
56
  ]
57
57
  },
58
+ {
59
+ "name": "ful-menu",
60
+ "description": "A menu of commands on the native popover platform: the invoker named by for toggles it, light dismiss and Escape come from the browser, and the element adds the menu semantics and the keyboard protocol (roving focus with the arrows, Home and End, type-ahead, Enter and Space to activate, Escape and every close handing the focus back to the invoker). The items are the buttons and links written inside it, kept as they are and given their menuitem role; activation is the item's own click, which the menu only follows by closing.",
61
+ "attributes": [
62
+ {
63
+ "name": "for",
64
+ "description": "The id of the invoker the menu belongs to: it toggles the menu, carries aria-haspopup and aria-expanded, and takes the focus back when the menu closes. Read once at the upgrade, so the invoker must already be in the page by then. (string)"
65
+ }
66
+ ]
67
+ },
58
68
  {
59
69
  "name": "ful-toasts",
60
- "description": "A transient feedback region, one per page: each show() (or a show-toast document event carrying the same detail) appends a toast that dismisses itself after its timeout, the element's timeout attribute or five seconds by default, and carries its own dismiss button. severity picks the theme and the announcement, info by default, success, warning and error, the error one announced as an alert; a Failure message shows its problems' reasons.",
70
+ "description": "A transient feedback region, one per page: each show() (or a show-toast document event carrying the same detail) appends a toast that dismisses itself after its timeout, the element's timeout attribute or five seconds by default, and carries its own dismiss button. severity picks the theme and the announcement, info by default, success, warning and error, the error one announced as an alert; a Failure message shows its problems' reasons. The timer holds while the toast is hovered or holds the focus, and action: { label, onClick } renders a button beside the message whose click answers and retires the toast, the same option travelling in the event detail.",
61
71
  "attributes": [
62
72
  {
63
73
  "name": "timeout",
@@ -71,7 +81,7 @@
71
81
  "attributes": [
72
82
  {
73
83
  "name": "active",
74
- "description": "The index of the visible panel, zero based, reflected as the active attribute. Clicks, the arrow keys and the property all move it, each move answering with a change event. (number)"
84
+ "description": "The index of the visible panel, zero based, reflected as the active attribute. Clicks, the arrow keys and the property all move it, each move answering with a tabs:change event. (number)"
75
85
  }
76
86
  ]
77
87
  },
@@ -657,6 +667,10 @@
657
667
  "name": "autocomplete",
658
668
  "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. (string)"
659
669
  },
670
+ {
671
+ "name": "operator",
672
+ "description": "Fixes the operator for the element's life: no menu and no button render, and every tuple carries it. The plural is the menu's whitelist; declaring both warns, the singular winning, and an unknown name warns and pins the filter's default. (string)"
673
+ },
660
674
  {
661
675
  "name": "disabled",
662
676
  "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. (boolean)"
@@ -719,6 +733,10 @@
719
733
  "name": "autocomplete",
720
734
  "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. (string)"
721
735
  },
736
+ {
737
+ "name": "operator",
738
+ "description": "Fixes the operator for the element's life: no menu and no button render, and every tuple carries it. The plural is the menu's whitelist; declaring both warns, the singular winning, and an unknown name warns and pins the filter's default. (string)"
739
+ },
722
740
  {
723
741
  "name": "disabled",
724
742
  "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. (boolean)"
@@ -781,6 +799,10 @@
781
799
  "name": "autocomplete",
782
800
  "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. (string)"
783
801
  },
802
+ {
803
+ "name": "operator",
804
+ "description": "Fixes the operator for the element's life: no menu and no button render, and every tuple carries it. The plural is the menu's whitelist; declaring both warns, the singular winning, and an unknown name warns and pins the filter's default. (string)"
805
+ },
784
806
  {
785
807
  "name": "disabled",
786
808
  "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. (boolean)"
@@ -869,6 +891,14 @@
869
891
  "name": "autocomplete",
870
892
  "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. (string)"
871
893
  },
894
+ {
895
+ "name": "operator",
896
+ "description": "Fixes the operator for the element's life: no menu and no button render, and every tuple carries it. The plural is the menu's whitelist; declaring both warns, the singular winning, and an unknown name warns and pins the filter's default. (string)"
897
+ },
898
+ {
899
+ "name": "sensitivity",
900
+ "description": "Fixes the case sensitivity for the element's life, on the operator's terms: the button leaves and every tuple carries it. (string)"
901
+ },
872
902
  {
873
903
  "name": "disabled",
874
904
  "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. (boolean)"
@@ -1055,7 +1085,7 @@
1055
1085
  },
1056
1086
  {
1057
1087
  "name": "value",
1058
- "description": "The selected keys, comma separated, whether or not the select is multiple. A key given here is trimmed and cannot contain a comma; assign such a key through the property instead. The property answers a key for a single select and an array for a multiple one. (string)"
1088
+ "description": "The selected keys, comma separated, whether or not the select is multiple. A key given here is trimmed and cannot contain a comma; assign such a key through the property instead. The property answers a key for a single select and an array for a multiple one. A single select reads a present but empty attribute as the empty key, the one an <option value=\"\"> carries, where an absent attribute means no selection; a multiple select reads it as no keys. (string)"
1059
1089
  },
1060
1090
  {
1061
1091
  "name": "multiple",
@@ -1069,7 +1099,7 @@
1069
1099
  },
1070
1100
  {
1071
1101
  "name": "ful-dropdown",
1072
- "description": "The options popup of a ful-select, with a localized no-results message when the search matches nothing. Rarely used on its own.",
1102
+ "description": "The options popup of a ful-select, with a localized no-results message when the search matches nothing. An entry whose metadata.disabled is truthy is refused: its row carries aria-disabled and metadata.reason as its title, the arrows and Home/End walk past it, and a click on it changes nothing. Rarely used on its own.",
1073
1103
  "attributes": [
1074
1104
  {
1075
1105
  "name": "listbox",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@optionfactory/fml",
4
- "version": "9.0.0-rc13",
4
+ "version": "9.0.0-rc15",
5
5
  "description-markup": "none",
6
6
  "contributions": {
7
7
  "html": {
@@ -45,7 +45,7 @@
45
45
  },
46
46
  {
47
47
  "name": "ful-dialog",
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.",
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. Dialog.ask(header, body, buttons) and Dialog.confirm(header, body, labels) ask a question in a transient one, building, showing, answering and removing the element themselves; a confirm's cancel, close and Escape all answer the negative.",
49
49
  "attributes": [
50
50
  {
51
51
  "name": "header",
@@ -99,10 +99,10 @@
99
99
  },
100
100
  {
101
101
  "name": "ful-drawer",
102
- "description": "A side panel drawer on the native dialog platform: a header with its title (the title attribute, or update()'s own) and close button, and a body that opens in a loading state, then shows either the content delivered by update(title, callback) (or the slotted one, when it is never updated) or the error a rejecting callback carries. placement picks the side, end by default, start its mirror. Any element carrying dialog-target set to its id opens it too.",
102
+ "description": "A side panel drawer on the native dialog platform: a header with its title (the header attribute, or update()'s own) and close button, and a body that opens in a loading state, then shows either the content delivered by update(header, callback) (or the slotted one, when it is never updated) or the error a rejecting callback carries. placement picks the side, end by default, start its mirror. Any element carrying dialog-target set to its id opens it too.",
103
103
  "attributes": [
104
104
  {
105
- "name": "title",
105
+ "name": "header",
106
106
  "description": "The drawer's title, shown in its header. Text only, and also what update() re-titles the panel with.",
107
107
  "value": {
108
108
  "kind": "plain",
@@ -147,9 +147,25 @@
147
147
  }
148
148
  ]
149
149
  },
150
+ {
151
+ "name": "ful-menu",
152
+ "description": "A menu of commands on the native popover platform: the invoker named by for toggles it, light dismiss and Escape come from the browser, and the element adds the menu semantics and the keyboard protocol (roving focus with the arrows, Home and End, type-ahead, Enter and Space to activate, Escape and every close handing the focus back to the invoker). The items are the buttons and links written inside it, kept as they are and given their menuitem role; activation is the item's own click, which the menu only follows by closing.",
153
+ "attributes": [
154
+ {
155
+ "name": "for",
156
+ "description": "The id of the invoker the menu belongs to: it toggles the menu, carries aria-haspopup and aria-expanded, and takes the focus back when the menu closes. Read once at the upgrade, so the invoker must already be in the page by then.",
157
+ "value": {
158
+ "kind": "plain",
159
+ "type": "string"
160
+ }
161
+ }
162
+ ],
163
+ "slots": [],
164
+ "events": []
165
+ },
150
166
  {
151
167
  "name": "ful-toasts",
152
- "description": "A transient feedback region, one per page: each show() (or a show-toast document event carrying the same detail) appends a toast that dismisses itself after its timeout, the element's timeout attribute or five seconds by default, and carries its own dismiss button. severity picks the theme and the announcement, info by default, success, warning and error, the error one announced as an alert; a Failure message shows its problems' reasons.",
168
+ "description": "A transient feedback region, one per page: each show() (or a show-toast document event carrying the same detail) appends a toast that dismisses itself after its timeout, the element's timeout attribute or five seconds by default, and carries its own dismiss button. severity picks the theme and the announcement, info by default, success, warning and error, the error one announced as an alert; a Failure message shows its problems' reasons. The timer holds while the toast is hovered or holds the focus, and action: { label, onClick } renders a button beside the message whose click answers and retires the toast, the same option travelling in the event detail.",
153
169
  "attributes": [
154
170
  {
155
171
  "name": "timeout",
@@ -169,7 +185,7 @@
169
185
  "attributes": [
170
186
  {
171
187
  "name": "active",
172
- "description": "The index of the visible panel, zero based, reflected as the active attribute. Clicks, the arrow keys and the property all move it, each move answering with a change event.",
188
+ "description": "The index of the visible panel, zero based, reflected as the active attribute. Clicks, the arrow keys and the property all move it, each move answering with a tabs:change event.",
173
189
  "value": {
174
190
  "kind": "plain",
175
191
  "type": "number"
@@ -188,8 +204,8 @@
188
204
  ],
189
205
  "events": [
190
206
  {
191
- "name": "change",
192
- "description": "Fired with the active index and the previous one whenever the visible panel moves."
207
+ "name": "tabs:change",
208
+ "description": "Fired with the active index and the previous one whenever the visible panel moves. A name of its own rather than the fields' change: the panels are the host's children, so every native change of a field inside them bubbles through the host under that name."
193
209
  },
194
210
  {
195
211
  "name": "section:requested",
@@ -1367,7 +1383,7 @@
1367
1383
  },
1368
1384
  {
1369
1385
  "name": "empty",
1370
- "description": "Shown in place of the rows when a load returns none, replacing the localized default message."
1386
+ "description": "Shown in place of the rows when a load returns none, replacing the localized default message. Rendered per load in the rows' own scope, so its expressions read schema, pageRequest, filterRequest and pageResponse: an empty state can tell nothing-there from a filter that matched nothing."
1371
1387
  },
1372
1388
  {
1373
1389
  "name": "footer",
@@ -1519,6 +1535,14 @@
1519
1535
  "type": "string"
1520
1536
  }
1521
1537
  },
1538
+ {
1539
+ "name": "operator",
1540
+ "description": "Fixes the operator for the element's life: no menu and no button render, and every tuple carries it. The plural is the menu's whitelist; declaring both warns, the singular winning, and an unknown name warns and pins the filter's default.",
1541
+ "value": {
1542
+ "kind": "plain",
1543
+ "type": "string"
1544
+ }
1545
+ },
1522
1546
  {
1523
1547
  "name": "disabled",
1524
1548
  "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.",
@@ -1661,6 +1685,14 @@
1661
1685
  "type": "string"
1662
1686
  }
1663
1687
  },
1688
+ {
1689
+ "name": "operator",
1690
+ "description": "Fixes the operator for the element's life: no menu and no button render, and every tuple carries it. The plural is the menu's whitelist; declaring both warns, the singular winning, and an unknown name warns and pins the filter's default.",
1691
+ "value": {
1692
+ "kind": "plain",
1693
+ "type": "string"
1694
+ }
1695
+ },
1664
1696
  {
1665
1697
  "name": "disabled",
1666
1698
  "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.",
@@ -1803,6 +1835,14 @@
1803
1835
  "type": "string"
1804
1836
  }
1805
1837
  },
1838
+ {
1839
+ "name": "operator",
1840
+ "description": "Fixes the operator for the element's life: no menu and no button render, and every tuple carries it. The plural is the menu's whitelist; declaring both warns, the singular winning, and an unknown name warns and pins the filter's default.",
1841
+ "value": {
1842
+ "kind": "plain",
1843
+ "type": "string"
1844
+ }
1845
+ },
1806
1846
  {
1807
1847
  "name": "disabled",
1808
1848
  "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.",
@@ -2015,6 +2055,22 @@
2015
2055
  "type": "string"
2016
2056
  }
2017
2057
  },
2058
+ {
2059
+ "name": "operator",
2060
+ "description": "Fixes the operator for the element's life: no menu and no button render, and every tuple carries it. The plural is the menu's whitelist; declaring both warns, the singular winning, and an unknown name warns and pins the filter's default.",
2061
+ "value": {
2062
+ "kind": "plain",
2063
+ "type": "string"
2064
+ }
2065
+ },
2066
+ {
2067
+ "name": "sensitivity",
2068
+ "description": "Fixes the case sensitivity for the element's life, on the operator's terms: the button leaves and every tuple carries it.",
2069
+ "value": {
2070
+ "kind": "plain",
2071
+ "type": "string"
2072
+ }
2073
+ },
2018
2074
  {
2019
2075
  "name": "disabled",
2020
2076
  "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.",
@@ -2425,7 +2481,7 @@
2425
2481
  },
2426
2482
  {
2427
2483
  "name": "value",
2428
- "description": "The selected keys, comma separated, whether or not the select is multiple. A key given here is trimmed and cannot contain a comma; assign such a key through the property instead. The property answers a key for a single select and an array for a multiple one.",
2484
+ "description": "The selected keys, comma separated, whether or not the select is multiple. A key given here is trimmed and cannot contain a comma; assign such a key through the property instead. The property answers a key for a single select and an array for a multiple one. A single select reads a present but empty attribute as the empty key, the one an <option value=\"\"> carries, where an absent attribute means no selection; a multiple select reads it as no keys.",
2429
2485
  "value": {
2430
2486
  "kind": "plain",
2431
2487
  "type": "string"
@@ -2479,7 +2535,7 @@
2479
2535
  },
2480
2536
  {
2481
2537
  "name": "ful-dropdown",
2482
- "description": "The options popup of a ful-select, with a localized no-results message when the search matches nothing. Rarely used on its own.",
2538
+ "description": "The options popup of a ful-select, with a localized no-results message when the search matches nothing. An entry whose metadata.disabled is truthy is refused: its row carries aria-disabled and metadata.reason as its title, the arrows and Home/End walk past it, and a click on it changes nothing. Rarely used on its own.",
2483
2539
  "attributes": [
2484
2540
  {
2485
2541
  "name": "listbox",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optionfactory/fml",
3
- "version": "9.0.0-rc13",
3
+ "version": "9.0.0-rc15",
4
4
  "type": "module",
5
5
  "main": "./dist/fml.mjs",
6
6
  "module": "./dist/fml.mjs",