@optionfactory/fml 9.0.0-rc3 → 9.0.0-rc30
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/README.md +16 -88
- package/dist/client-errors.iife.js +40 -49
- package/dist/client-errors.iife.js.map +1 -1
- package/dist/client-errors.iife.min.js +1 -1
- package/dist/client-errors.iife.min.js.map +1 -1
- package/dist/custom-elements.json +483 -50
- package/dist/fml.css +25 -20
- package/dist/fml.css.map +1 -1
- package/dist/fml.iife.js +5688 -2542
- package/dist/fml.iife.js.map +1 -1
- package/dist/fml.iife.min.js +1 -1
- package/dist/fml.iife.min.js.map +1 -1
- package/dist/ftl.d.mts +398 -227
- package/dist/ftl.iife.js +682 -1016
- package/dist/ftl.iife.js.map +1 -1
- package/dist/ftl.iife.min.js +1 -1
- package/dist/ftl.iife.min.js.map +1 -1
- package/dist/ftl.min.mjs +1 -1
- package/dist/ftl.min.mjs.map +1 -1
- package/dist/ftl.mjs +682 -1016
- package/dist/ftl.mjs.map +1 -1
- package/dist/ful.css +25 -20
- package/dist/ful.css.map +1 -1
- package/dist/ful.d.mts +3043 -546
- package/dist/ful.iife.js +4875 -1387
- package/dist/ful.iife.js.map +1 -1
- package/dist/ful.iife.min.js +1 -1
- package/dist/ful.iife.min.js.map +1 -1
- package/dist/ful.min.mjs +1 -1
- package/dist/ful.min.mjs.map +1 -1
- package/dist/ful.mjs +4873 -1389
- package/dist/ful.mjs.map +1 -1
- package/dist/httpc.d.mts +143 -123
- package/dist/httpc.iife.js +163 -175
- package/dist/httpc.iife.js.map +1 -1
- package/dist/httpc.iife.min.js +1 -1
- package/dist/httpc.iife.min.js.map +1 -1
- package/dist/httpc.min.mjs +1 -1
- package/dist/httpc.min.mjs.map +1 -1
- package/dist/httpc.mjs +163 -175
- package/dist/httpc.mjs.map +1 -1
- package/dist/vscode.html-custom-data.json +234 -38
- package/dist/web-types.json +489 -50
- package/package.json +2 -2
package/dist/web-types.json
CHANGED
|
@@ -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-
|
|
4
|
+
"version": "9.0.0-rc30",
|
|
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:
|
|
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:
|
|
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
|
|
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. dismiss(reason) dismisses it as the close button would, refusable and guarded alike, answering whether it closed. 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.",
|
|
33
49
|
"attributes": [
|
|
34
50
|
{
|
|
35
51
|
"name": "header",
|
|
@@ -38,35 +54,67 @@
|
|
|
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
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "guard-dismiss",
|
|
76
|
+
"description": "For the dialog holding a form the user edits: a dismissal nobody refused, while a ful-form of the dialog under track-changes holds edits not saved yet, first asks the user through Dialog.confirm whether to close and drop them, with the localized dialog.discard texts. Gestures and dismiss() are asked about; close(), a data-result button, close-on-submit and update() are answers or the page deciding, and ask nothing. A second Escape with no interaction in between closes it whatever the user would answer.",
|
|
77
|
+
"value": {
|
|
78
|
+
"kind": "plain",
|
|
79
|
+
"type": "boolean"
|
|
80
|
+
}
|
|
41
81
|
}
|
|
42
82
|
],
|
|
43
83
|
"slots": [
|
|
84
|
+
{
|
|
85
|
+
"name": "header",
|
|
86
|
+
"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."
|
|
87
|
+
},
|
|
44
88
|
{
|
|
45
89
|
"name": "default",
|
|
46
90
|
"description": "The dialog body."
|
|
47
91
|
},
|
|
48
92
|
{
|
|
49
93
|
"name": "buttons",
|
|
50
|
-
"description": "Buttons closing the dialog; each carries a data-result that
|
|
94
|
+
"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
95
|
}
|
|
52
96
|
],
|
|
53
97
|
"events": [
|
|
54
98
|
{
|
|
55
99
|
"name": "close",
|
|
56
|
-
"description": "Fired when the dialog closes, carrying the data-result of the button that closed it,
|
|
100
|
+
"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
101
|
},
|
|
58
102
|
{
|
|
59
103
|
"name": "section:requested",
|
|
60
104
|
"description": "Fired by the disclosure when it opens (bubbling): answer through AsyncEvents.asyncOn with the body's delivery; the open awaits the answers under the loading chrome, and a failed delivery paints the body's problems."
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"name": "dialog:dismiss",
|
|
108
|
+
"description": "Fired before the close button, Escape, a backdrop click or dismiss(reason) closes the dialog, with detail.reason (button, escape, backdrop or the one dismiss() was given): cancelable, so preventDefault() keeps it open. Not fired for a data-result button, close-on-submit or close(). A second Escape with no interaction in between closes the dialog whatever the page does, and its dialog:dismiss is then not cancelable."
|
|
61
109
|
}
|
|
62
110
|
]
|
|
63
111
|
},
|
|
64
112
|
{
|
|
65
113
|
"name": "ful-drawer",
|
|
66
|
-
"description": "A side panel drawer on the native dialog platform: a header with its title (the
|
|
114
|
+
"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 shows the slotted content or, under update(header, callback), opens in a loading state and then shows either the content the callback delivered or the error a rejecting callback carries. placement picks the side, end by default, start its mirror. open()/ask() answer with how the drawer ended, as a ful-dialog's do, an ask() on a drawer update() opened waiting for that opening's ending; dismiss(reason) dismisses it as the close button would, refusable and guarded alike, answering whether it closed. Any element carrying dialog-target set to its id opens it too.",
|
|
67
115
|
"attributes": [
|
|
68
116
|
{
|
|
69
|
-
"name": "
|
|
117
|
+
"name": "header",
|
|
70
118
|
"description": "The drawer's title, shown in its header. Text only, and also what update() re-titles the panel with.",
|
|
71
119
|
"value": {
|
|
72
120
|
"kind": "plain",
|
|
@@ -80,6 +128,22 @@
|
|
|
80
128
|
"kind": "plain",
|
|
81
129
|
"type": "string"
|
|
82
130
|
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"name": "close-on-submit",
|
|
134
|
+
"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.",
|
|
135
|
+
"value": {
|
|
136
|
+
"kind": "plain",
|
|
137
|
+
"type": "boolean"
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "guard-dismiss",
|
|
142
|
+
"description": "For the drawer holding a form the user edits: a dismissal nobody refused, while a ful-form of the drawer under track-changes holds edits not saved yet, first asks the user through Dialog.confirm whether to close and drop them, with the localized dialog.discard texts. Gestures and dismiss() are asked about; close(), a data-result button, close-on-submit and update() are answers or the page deciding, and ask nothing. A second Escape with no interaction in between closes it whatever the user would answer.",
|
|
143
|
+
"value": {
|
|
144
|
+
"kind": "plain",
|
|
145
|
+
"type": "boolean"
|
|
146
|
+
}
|
|
83
147
|
}
|
|
84
148
|
],
|
|
85
149
|
"slots": [
|
|
@@ -95,17 +159,37 @@
|
|
|
95
159
|
"events": [
|
|
96
160
|
{
|
|
97
161
|
"name": "close",
|
|
98
|
-
"description": "Fired when the drawer closes,
|
|
162
|
+
"description": "Fired when the drawer closes, carrying how it ended, the same object a ful-dialog answers with: dismissed tells the close button and Escape from an answer, result the data-result of the button, or the argument of close(result), that closed it, and response what a submit answered with under close-on-submit, a save answering with no body at all being a save all the same. ask() and open() resolve with the same object, and a drawer leaving the document while open answers its waiters with a dismissal."
|
|
99
163
|
},
|
|
100
164
|
{
|
|
101
165
|
"name": "section:requested",
|
|
102
166
|
"description": "Fired by the disclosure when it opens (bubbling): answer through AsyncEvents.asyncOn with the body's delivery; the open awaits the answers under the loading chrome, and a failed delivery paints the body's problems."
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"name": "drawer:dismiss",
|
|
170
|
+
"description": "Fired before the close button, Escape, a backdrop click or dismiss(reason) closes the drawer, with detail.reason (button, escape, backdrop or the one dismiss() was given): cancelable, so preventDefault() keeps it open. Not fired for a data-result button, close-on-submit or close(). A second Escape with no interaction in between closes the drawer at once, and its drawer:dismiss is then not cancelable."
|
|
103
171
|
}
|
|
104
172
|
]
|
|
105
173
|
},
|
|
174
|
+
{
|
|
175
|
+
"name": "ful-menu",
|
|
176
|
+
"description": "A menu of commands on the native popover platform: the invoker named by for toggles it, or, without for, one menu serves many invokers and showFor(invoker) opens it beside the one it is for. 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.",
|
|
177
|
+
"attributes": [
|
|
178
|
+
{
|
|
179
|
+
"name": "for",
|
|
180
|
+
"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. Without it the menu is shared, opened by showFor(invoker).",
|
|
181
|
+
"value": {
|
|
182
|
+
"kind": "plain",
|
|
183
|
+
"type": "string"
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
"slots": [],
|
|
188
|
+
"events": []
|
|
189
|
+
},
|
|
106
190
|
{
|
|
107
191
|
"name": "ful-toasts",
|
|
108
|
-
"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.",
|
|
192
|
+
"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.",
|
|
109
193
|
"attributes": [
|
|
110
194
|
{
|
|
111
195
|
"name": "timeout",
|
|
@@ -125,7 +209,7 @@
|
|
|
125
209
|
"attributes": [
|
|
126
210
|
{
|
|
127
211
|
"name": "active",
|
|
128
|
-
"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.",
|
|
212
|
+
"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.",
|
|
129
213
|
"value": {
|
|
130
214
|
"kind": "plain",
|
|
131
215
|
"type": "number"
|
|
@@ -144,8 +228,8 @@
|
|
|
144
228
|
],
|
|
145
229
|
"events": [
|
|
146
230
|
{
|
|
147
|
-
"name": "change",
|
|
148
|
-
"description": "Fired with the active index and the previous one whenever the visible panel moves."
|
|
231
|
+
"name": "tabs:change",
|
|
232
|
+
"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."
|
|
149
233
|
},
|
|
150
234
|
{
|
|
151
235
|
"name": "section:requested",
|
|
@@ -176,7 +260,7 @@
|
|
|
176
260
|
},
|
|
177
261
|
{
|
|
178
262
|
"name": "ful-wizard",
|
|
179
|
-
"description": "A wizard: a progress of steps over one-of-N sections. The steps are declared as step elements in the steps slot, the sections as the slotless children, paired in order; each section may carry a data-step name, which is what move() answers to, next() and prev() walk the neighbors, and the current step is the aria-current=step claim carried in lockstep by the step and its section, so the chrome, including which section is shown, follows the claim alone. Each move answers with a change event.",
|
|
263
|
+
"description": "A wizard: a progress of steps over one-of-N sections. The steps are declared as step elements in the steps slot, the sections as the slotless children, paired in order; each section may carry a data-step name, which is what move() answers to, next() and prev() walk the neighbors, and the current step is the aria-current=step claim carried in lockstep by the step and its section, so the chrome, including which section is shown, follows the claim alone. Each move answers with a wizard:change event.",
|
|
180
264
|
"attributes": [
|
|
181
265
|
{
|
|
182
266
|
"name": "progress",
|
|
@@ -199,8 +283,8 @@
|
|
|
199
283
|
],
|
|
200
284
|
"events": [
|
|
201
285
|
{
|
|
202
|
-
"name": "change",
|
|
203
|
-
"description": "Fired with the index and the data-step name after next(), prev() or move() land on a different step."
|
|
286
|
+
"name": "wizard:change",
|
|
287
|
+
"description": "Fired with the index and the data-step name after next(), prev() or move() land on a different step. Named apart from change so the bubbling change of a field inside a step never reaches its listeners."
|
|
204
288
|
},
|
|
205
289
|
{
|
|
206
290
|
"name": "section:requested",
|
|
@@ -275,6 +359,22 @@
|
|
|
275
359
|
"kind": "plain",
|
|
276
360
|
"type": "string"
|
|
277
361
|
}
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"name": "track-changes",
|
|
365
|
+
"description": "Keeps track of the edits not saved yet: dirty answers whether a field the user edited since the last commit holds another value, the host matches :state(dirty) and the submit buttons carry a dot while it does. A successful submit commits, and so does the form once its fields have rendered; commit() is for a save of the page's own, and save() submits only while there is something to save, answering whether nothing unsaved is left. A ful-drawer or ful-dialog under guard-dismiss asks before a dismissal drops the edits.",
|
|
366
|
+
"value": {
|
|
367
|
+
"kind": "plain",
|
|
368
|
+
"type": "boolean"
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"name": "guard-leave",
|
|
373
|
+
"description": "Asks before the page is left while the form holds edits not saved yet, through the browser's own prompt. Implies track-changes.",
|
|
374
|
+
"value": {
|
|
375
|
+
"kind": "plain",
|
|
376
|
+
"type": "boolean"
|
|
377
|
+
}
|
|
278
378
|
}
|
|
279
379
|
],
|
|
280
380
|
"slots": [],
|
|
@@ -285,15 +385,19 @@
|
|
|
285
385
|
},
|
|
286
386
|
{
|
|
287
387
|
"name": "submit:requested",
|
|
288
|
-
"description": "Fired after the submit was accepted, to let a listener resolve the response itself."
|
|
388
|
+
"description": "Fired after the submit was accepted, to let a listener resolve the response itself. Register it through AsyncEvents.asyncOn: the form awaits only such a listener, and one added with addEventListener is not waited for."
|
|
289
389
|
},
|
|
290
390
|
{
|
|
291
391
|
"name": "submit:success",
|
|
292
|
-
"description": "Fired with the submitted values and the mapped response."
|
|
392
|
+
"description": "Fired with the submitted values and the mapped response, once the form has settled: the spinner is released, the buttons are no longer held off and a listener may submit again."
|
|
293
393
|
},
|
|
294
394
|
{
|
|
295
395
|
"name": "submit:failure",
|
|
296
|
-
"description": "Fired with the exception when the submit fails. The form does not rethrow."
|
|
396
|
+
"description": "Fired with the exception when the submit fails, once the form has settled: the spinner is released and the problems of a Failure are already shown, so a listener writing errors has the last word. The form does not rethrow: submit() resolves false, as it resolves true after submit:success."
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"name": "dirty:change",
|
|
400
|
+
"description": "Fired under track-changes when the form starts or stops holding edits not saved yet, with dirty in the detail."
|
|
297
401
|
}
|
|
298
402
|
]
|
|
299
403
|
},
|
|
@@ -361,11 +465,11 @@
|
|
|
361
465
|
},
|
|
362
466
|
{
|
|
363
467
|
"name": "ful-input",
|
|
364
|
-
"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.",
|
|
468
|
+
"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.",
|
|
365
469
|
"attributes": [
|
|
366
470
|
{
|
|
367
471
|
"name": "type",
|
|
368
|
-
"description": "Any native input type,
|
|
472
|
+
"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.",
|
|
369
473
|
"value": {
|
|
370
474
|
"kind": "plain",
|
|
371
475
|
"type": "string"
|
|
@@ -381,7 +485,7 @@
|
|
|
381
485
|
},
|
|
382
486
|
{
|
|
383
487
|
"name": "keep",
|
|
384
|
-
"description": "A regular expression naming the
|
|
488
|
+
"description": "A regular expression naming what survives: on every input event the whole value is filtered to its matches, concatenated, so keep=\"[0-9]\" is digits only. It matches rather than negating, so it takes a pattern and not only a character class, and the pattern must match each partial value typed on the way to a complete one.",
|
|
385
489
|
"value": {
|
|
386
490
|
"kind": "plain",
|
|
387
491
|
"type": "string"
|
|
@@ -411,6 +515,14 @@
|
|
|
411
515
|
"type": "boolean"
|
|
412
516
|
}
|
|
413
517
|
},
|
|
518
|
+
{
|
|
519
|
+
"name": "unsigned",
|
|
520
|
+
"description": "Refuses the leading minus a numeric or decimal field otherwise takes. It narrows the type's own filter rather than replacing it, so a decimal still keeps one separator and still answers with a dot. Meaningless on any other type, where the sign is the native control's business, and a declared keep or reject still outranks it.",
|
|
521
|
+
"value": {
|
|
522
|
+
"kind": "plain",
|
|
523
|
+
"type": "boolean"
|
|
524
|
+
}
|
|
525
|
+
},
|
|
414
526
|
{
|
|
415
527
|
"name": "autocomplete",
|
|
416
528
|
"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.",
|
|
@@ -491,7 +603,7 @@
|
|
|
491
603
|
"attributes": [
|
|
492
604
|
{
|
|
493
605
|
"name": "type",
|
|
494
|
-
"description": "Any native input type,
|
|
606
|
+
"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.",
|
|
495
607
|
"value": {
|
|
496
608
|
"kind": "plain",
|
|
497
609
|
"type": "string"
|
|
@@ -507,7 +619,7 @@
|
|
|
507
619
|
},
|
|
508
620
|
{
|
|
509
621
|
"name": "keep",
|
|
510
|
-
"description": "A regular expression naming the
|
|
622
|
+
"description": "A regular expression naming what survives: on every input event the whole value is filtered to its matches, concatenated, so keep=\"[0-9]\" is digits only. It matches rather than negating, so it takes a pattern and not only a character class, and the pattern must match each partial value typed on the way to a complete one.",
|
|
511
623
|
"value": {
|
|
512
624
|
"kind": "plain",
|
|
513
625
|
"type": "string"
|
|
@@ -537,6 +649,14 @@
|
|
|
537
649
|
"type": "boolean"
|
|
538
650
|
}
|
|
539
651
|
},
|
|
652
|
+
{
|
|
653
|
+
"name": "unsigned",
|
|
654
|
+
"description": "Refuses the leading minus a numeric or decimal field otherwise takes. It narrows the type's own filter rather than replacing it, so a decimal still keeps one separator and still answers with a dot. Meaningless on any other type, where the sign is the native control's business, and a declared keep or reject still outranks it.",
|
|
655
|
+
"value": {
|
|
656
|
+
"kind": "plain",
|
|
657
|
+
"type": "boolean"
|
|
658
|
+
}
|
|
659
|
+
},
|
|
540
660
|
{
|
|
541
661
|
"name": "autocomplete",
|
|
542
662
|
"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.",
|
|
@@ -725,7 +845,7 @@
|
|
|
725
845
|
"attributes": [
|
|
726
846
|
{
|
|
727
847
|
"name": "type",
|
|
728
|
-
"description": "Any native input type,
|
|
848
|
+
"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.",
|
|
729
849
|
"value": {
|
|
730
850
|
"kind": "plain",
|
|
731
851
|
"type": "string"
|
|
@@ -741,7 +861,7 @@
|
|
|
741
861
|
},
|
|
742
862
|
{
|
|
743
863
|
"name": "keep",
|
|
744
|
-
"description": "A regular expression naming the
|
|
864
|
+
"description": "A regular expression naming what survives: on every input event the whole value is filtered to its matches, concatenated, so keep=\"[0-9]\" is digits only. It matches rather than negating, so it takes a pattern and not only a character class, and the pattern must match each partial value typed on the way to a complete one.",
|
|
745
865
|
"value": {
|
|
746
866
|
"kind": "plain",
|
|
747
867
|
"type": "string"
|
|
@@ -771,6 +891,14 @@
|
|
|
771
891
|
"type": "boolean"
|
|
772
892
|
}
|
|
773
893
|
},
|
|
894
|
+
{
|
|
895
|
+
"name": "unsigned",
|
|
896
|
+
"description": "Refuses the leading minus a numeric or decimal field otherwise takes. It narrows the type's own filter rather than replacing it, so a decimal still keeps one separator and still answers with a dot. Meaningless on any other type, where the sign is the native control's business, and a declared keep or reject still outranks it.",
|
|
897
|
+
"value": {
|
|
898
|
+
"kind": "plain",
|
|
899
|
+
"type": "boolean"
|
|
900
|
+
}
|
|
901
|
+
},
|
|
774
902
|
{
|
|
775
903
|
"name": "autocomplete",
|
|
776
904
|
"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.",
|
|
@@ -875,7 +1003,7 @@
|
|
|
875
1003
|
"attributes": [
|
|
876
1004
|
{
|
|
877
1005
|
"name": "type",
|
|
878
|
-
"description": "Any native input type,
|
|
1006
|
+
"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.",
|
|
879
1007
|
"value": {
|
|
880
1008
|
"kind": "plain",
|
|
881
1009
|
"type": "string"
|
|
@@ -891,7 +1019,7 @@
|
|
|
891
1019
|
},
|
|
892
1020
|
{
|
|
893
1021
|
"name": "keep",
|
|
894
|
-
"description": "A regular expression naming the
|
|
1022
|
+
"description": "A regular expression naming what survives: on every input event the whole value is filtered to its matches, concatenated, so keep=\"[0-9]\" is digits only. It matches rather than negating, so it takes a pattern and not only a character class, and the pattern must match each partial value typed on the way to a complete one.",
|
|
895
1023
|
"value": {
|
|
896
1024
|
"kind": "plain",
|
|
897
1025
|
"type": "string"
|
|
@@ -921,6 +1049,14 @@
|
|
|
921
1049
|
"type": "boolean"
|
|
922
1050
|
}
|
|
923
1051
|
},
|
|
1052
|
+
{
|
|
1053
|
+
"name": "unsigned",
|
|
1054
|
+
"description": "Refuses the leading minus a numeric or decimal field otherwise takes. It narrows the type's own filter rather than replacing it, so a decimal still keeps one separator and still answers with a dot. Meaningless on any other type, where the sign is the native control's business, and a declared keep or reject still outranks it.",
|
|
1055
|
+
"value": {
|
|
1056
|
+
"kind": "plain",
|
|
1057
|
+
"type": "boolean"
|
|
1058
|
+
}
|
|
1059
|
+
},
|
|
924
1060
|
{
|
|
925
1061
|
"name": "autocomplete",
|
|
926
1062
|
"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.",
|
|
@@ -1025,7 +1161,7 @@
|
|
|
1025
1161
|
"attributes": [
|
|
1026
1162
|
{
|
|
1027
1163
|
"name": "type",
|
|
1028
|
-
"description": "Any native input type,
|
|
1164
|
+
"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.",
|
|
1029
1165
|
"value": {
|
|
1030
1166
|
"kind": "plain",
|
|
1031
1167
|
"type": "string"
|
|
@@ -1041,7 +1177,7 @@
|
|
|
1041
1177
|
},
|
|
1042
1178
|
{
|
|
1043
1179
|
"name": "keep",
|
|
1044
|
-
"description": "A regular expression naming the
|
|
1180
|
+
"description": "A regular expression naming what survives: on every input event the whole value is filtered to its matches, concatenated, so keep=\"[0-9]\" is digits only. It matches rather than negating, so it takes a pattern and not only a character class, and the pattern must match each partial value typed on the way to a complete one.",
|
|
1045
1181
|
"value": {
|
|
1046
1182
|
"kind": "plain",
|
|
1047
1183
|
"type": "string"
|
|
@@ -1071,6 +1207,14 @@
|
|
|
1071
1207
|
"type": "boolean"
|
|
1072
1208
|
}
|
|
1073
1209
|
},
|
|
1210
|
+
{
|
|
1211
|
+
"name": "unsigned",
|
|
1212
|
+
"description": "Refuses the leading minus a numeric or decimal field otherwise takes. It narrows the type's own filter rather than replacing it, so a decimal still keeps one separator and still answers with a dot. Meaningless on any other type, where the sign is the native control's business, and a declared keep or reject still outranks it.",
|
|
1213
|
+
"value": {
|
|
1214
|
+
"kind": "plain",
|
|
1215
|
+
"type": "boolean"
|
|
1216
|
+
}
|
|
1217
|
+
},
|
|
1074
1218
|
{
|
|
1075
1219
|
"name": "autocomplete",
|
|
1076
1220
|
"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.",
|
|
@@ -1257,7 +1401,7 @@
|
|
|
1257
1401
|
},
|
|
1258
1402
|
{
|
|
1259
1403
|
"name": "autoload",
|
|
1260
|
-
"description": "Loads the first page while upgrading, instead of waiting for a reload(). The load is not awaited, so a slow or failing loader cannot hold up the page.",
|
|
1404
|
+
"description": "Loads the first page while upgrading, instead of waiting for a reload(). With a filters slot the load goes through the filter form's submit, so its submit listeners shape it as they shape the later loads. The load is not awaited, so a slow or failing loader cannot hold up the page.",
|
|
1261
1405
|
"value": {
|
|
1262
1406
|
"kind": "plain",
|
|
1263
1407
|
"type": "boolean"
|
|
@@ -1270,6 +1414,22 @@
|
|
|
1270
1414
|
"kind": "plain",
|
|
1271
1415
|
"type": "number"
|
|
1272
1416
|
}
|
|
1417
|
+
},
|
|
1418
|
+
{
|
|
1419
|
+
"name": "src",
|
|
1420
|
+
"description": "The url the default loader asks for rows; without it the table loads from an in-memory loader fed through withLoader. Stays live: writing it builds the loader again and reloads from the first page, keeping the sort and the filters.",
|
|
1421
|
+
"value": {
|
|
1422
|
+
"kind": "plain",
|
|
1423
|
+
"type": "string"
|
|
1424
|
+
}
|
|
1425
|
+
},
|
|
1426
|
+
{
|
|
1427
|
+
"name": "method",
|
|
1428
|
+
"description": "The http method the default loader sends, GET by default. Stays live, as src does.",
|
|
1429
|
+
"value": {
|
|
1430
|
+
"kind": "plain",
|
|
1431
|
+
"type": "string"
|
|
1432
|
+
}
|
|
1273
1433
|
}
|
|
1274
1434
|
],
|
|
1275
1435
|
"slots": [
|
|
@@ -1281,12 +1441,25 @@
|
|
|
1281
1441
|
"name": "caption",
|
|
1282
1442
|
"description": "The caption of the table."
|
|
1283
1443
|
},
|
|
1444
|
+
{
|
|
1445
|
+
"name": "empty",
|
|
1446
|
+
"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."
|
|
1447
|
+
},
|
|
1284
1448
|
{
|
|
1285
1449
|
"name": "footer",
|
|
1286
1450
|
"description": "Content rendered in the table footer."
|
|
1287
1451
|
}
|
|
1288
1452
|
],
|
|
1289
|
-
"events": [
|
|
1453
|
+
"events": [
|
|
1454
|
+
{
|
|
1455
|
+
"name": "load:success",
|
|
1456
|
+
"description": "Fired once a load has settled, after the rows are in place, the elements in them have rendered 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."
|
|
1457
|
+
},
|
|
1458
|
+
{
|
|
1459
|
+
"name": "load:failure",
|
|
1460
|
+
"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."
|
|
1461
|
+
}
|
|
1462
|
+
]
|
|
1290
1463
|
},
|
|
1291
1464
|
{
|
|
1292
1465
|
"name": "ful-pagination",
|
|
@@ -1360,7 +1533,7 @@
|
|
|
1360
1533
|
"attributes": [
|
|
1361
1534
|
{
|
|
1362
1535
|
"name": "type",
|
|
1363
|
-
"description": "Any native input type,
|
|
1536
|
+
"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.",
|
|
1364
1537
|
"value": {
|
|
1365
1538
|
"kind": "plain",
|
|
1366
1539
|
"type": "string"
|
|
@@ -1376,7 +1549,7 @@
|
|
|
1376
1549
|
},
|
|
1377
1550
|
{
|
|
1378
1551
|
"name": "keep",
|
|
1379
|
-
"description": "A regular expression naming the
|
|
1552
|
+
"description": "A regular expression naming what survives: on every input event the whole value is filtered to its matches, concatenated, so keep=\"[0-9]\" is digits only. It matches rather than negating, so it takes a pattern and not only a character class, and the pattern must match each partial value typed on the way to a complete one.",
|
|
1380
1553
|
"value": {
|
|
1381
1554
|
"kind": "plain",
|
|
1382
1555
|
"type": "string"
|
|
@@ -1406,6 +1579,14 @@
|
|
|
1406
1579
|
"type": "boolean"
|
|
1407
1580
|
}
|
|
1408
1581
|
},
|
|
1582
|
+
{
|
|
1583
|
+
"name": "unsigned",
|
|
1584
|
+
"description": "Refuses the leading minus a numeric or decimal field otherwise takes. It narrows the type's own filter rather than replacing it, so a decimal still keeps one separator and still answers with a dot. Meaningless on any other type, where the sign is the native control's business, and a declared keep or reject still outranks it.",
|
|
1585
|
+
"value": {
|
|
1586
|
+
"kind": "plain",
|
|
1587
|
+
"type": "boolean"
|
|
1588
|
+
}
|
|
1589
|
+
},
|
|
1409
1590
|
{
|
|
1410
1591
|
"name": "autocomplete",
|
|
1411
1592
|
"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.",
|
|
@@ -1414,6 +1595,14 @@
|
|
|
1414
1595
|
"type": "string"
|
|
1415
1596
|
}
|
|
1416
1597
|
},
|
|
1598
|
+
{
|
|
1599
|
+
"name": "operator",
|
|
1600
|
+
"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.",
|
|
1601
|
+
"value": {
|
|
1602
|
+
"kind": "plain",
|
|
1603
|
+
"type": "string"
|
|
1604
|
+
}
|
|
1605
|
+
},
|
|
1417
1606
|
{
|
|
1418
1607
|
"name": "disabled",
|
|
1419
1608
|
"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.",
|
|
@@ -1494,7 +1683,7 @@
|
|
|
1494
1683
|
"attributes": [
|
|
1495
1684
|
{
|
|
1496
1685
|
"name": "type",
|
|
1497
|
-
"description": "Any native input type,
|
|
1686
|
+
"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.",
|
|
1498
1687
|
"value": {
|
|
1499
1688
|
"kind": "plain",
|
|
1500
1689
|
"type": "string"
|
|
@@ -1510,7 +1699,7 @@
|
|
|
1510
1699
|
},
|
|
1511
1700
|
{
|
|
1512
1701
|
"name": "keep",
|
|
1513
|
-
"description": "A regular expression naming the
|
|
1702
|
+
"description": "A regular expression naming what survives: on every input event the whole value is filtered to its matches, concatenated, so keep=\"[0-9]\" is digits only. It matches rather than negating, so it takes a pattern and not only a character class, and the pattern must match each partial value typed on the way to a complete one.",
|
|
1514
1703
|
"value": {
|
|
1515
1704
|
"kind": "plain",
|
|
1516
1705
|
"type": "string"
|
|
@@ -1540,6 +1729,14 @@
|
|
|
1540
1729
|
"type": "boolean"
|
|
1541
1730
|
}
|
|
1542
1731
|
},
|
|
1732
|
+
{
|
|
1733
|
+
"name": "unsigned",
|
|
1734
|
+
"description": "Refuses the leading minus a numeric or decimal field otherwise takes. It narrows the type's own filter rather than replacing it, so a decimal still keeps one separator and still answers with a dot. Meaningless on any other type, where the sign is the native control's business, and a declared keep or reject still outranks it.",
|
|
1735
|
+
"value": {
|
|
1736
|
+
"kind": "plain",
|
|
1737
|
+
"type": "boolean"
|
|
1738
|
+
}
|
|
1739
|
+
},
|
|
1543
1740
|
{
|
|
1544
1741
|
"name": "autocomplete",
|
|
1545
1742
|
"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.",
|
|
@@ -1548,6 +1745,14 @@
|
|
|
1548
1745
|
"type": "string"
|
|
1549
1746
|
}
|
|
1550
1747
|
},
|
|
1748
|
+
{
|
|
1749
|
+
"name": "operator",
|
|
1750
|
+
"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.",
|
|
1751
|
+
"value": {
|
|
1752
|
+
"kind": "plain",
|
|
1753
|
+
"type": "string"
|
|
1754
|
+
}
|
|
1755
|
+
},
|
|
1551
1756
|
{
|
|
1552
1757
|
"name": "disabled",
|
|
1553
1758
|
"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.",
|
|
@@ -1628,7 +1833,7 @@
|
|
|
1628
1833
|
"attributes": [
|
|
1629
1834
|
{
|
|
1630
1835
|
"name": "type",
|
|
1631
|
-
"description": "Any native input type,
|
|
1836
|
+
"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.",
|
|
1632
1837
|
"value": {
|
|
1633
1838
|
"kind": "plain",
|
|
1634
1839
|
"type": "string"
|
|
@@ -1644,7 +1849,7 @@
|
|
|
1644
1849
|
},
|
|
1645
1850
|
{
|
|
1646
1851
|
"name": "keep",
|
|
1647
|
-
"description": "A regular expression naming the
|
|
1852
|
+
"description": "A regular expression naming what survives: on every input event the whole value is filtered to its matches, concatenated, so keep=\"[0-9]\" is digits only. It matches rather than negating, so it takes a pattern and not only a character class, and the pattern must match each partial value typed on the way to a complete one.",
|
|
1648
1853
|
"value": {
|
|
1649
1854
|
"kind": "plain",
|
|
1650
1855
|
"type": "string"
|
|
@@ -1674,6 +1879,14 @@
|
|
|
1674
1879
|
"type": "boolean"
|
|
1675
1880
|
}
|
|
1676
1881
|
},
|
|
1882
|
+
{
|
|
1883
|
+
"name": "unsigned",
|
|
1884
|
+
"description": "Refuses the leading minus a numeric or decimal field otherwise takes. It narrows the type's own filter rather than replacing it, so a decimal still keeps one separator and still answers with a dot. Meaningless on any other type, where the sign is the native control's business, and a declared keep or reject still outranks it.",
|
|
1885
|
+
"value": {
|
|
1886
|
+
"kind": "plain",
|
|
1887
|
+
"type": "boolean"
|
|
1888
|
+
}
|
|
1889
|
+
},
|
|
1677
1890
|
{
|
|
1678
1891
|
"name": "autocomplete",
|
|
1679
1892
|
"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.",
|
|
@@ -1682,6 +1895,14 @@
|
|
|
1682
1895
|
"type": "string"
|
|
1683
1896
|
}
|
|
1684
1897
|
},
|
|
1898
|
+
{
|
|
1899
|
+
"name": "operator",
|
|
1900
|
+
"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.",
|
|
1901
|
+
"value": {
|
|
1902
|
+
"kind": "plain",
|
|
1903
|
+
"type": "string"
|
|
1904
|
+
}
|
|
1905
|
+
},
|
|
1685
1906
|
{
|
|
1686
1907
|
"name": "disabled",
|
|
1687
1908
|
"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.",
|
|
@@ -1828,11 +2049,11 @@
|
|
|
1828
2049
|
},
|
|
1829
2050
|
{
|
|
1830
2051
|
"name": "ful-filter-text",
|
|
1831
|
-
"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.
|
|
2052
|
+
"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.",
|
|
1832
2053
|
"attributes": [
|
|
1833
2054
|
{
|
|
1834
2055
|
"name": "type",
|
|
1835
|
-
"description": "Any native input type,
|
|
2056
|
+
"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.",
|
|
1836
2057
|
"value": {
|
|
1837
2058
|
"kind": "plain",
|
|
1838
2059
|
"type": "string"
|
|
@@ -1848,7 +2069,7 @@
|
|
|
1848
2069
|
},
|
|
1849
2070
|
{
|
|
1850
2071
|
"name": "keep",
|
|
1851
|
-
"description": "A regular expression naming the
|
|
2072
|
+
"description": "A regular expression naming what survives: on every input event the whole value is filtered to its matches, concatenated, so keep=\"[0-9]\" is digits only. It matches rather than negating, so it takes a pattern and not only a character class, and the pattern must match each partial value typed on the way to a complete one.",
|
|
1852
2073
|
"value": {
|
|
1853
2074
|
"kind": "plain",
|
|
1854
2075
|
"type": "string"
|
|
@@ -1878,6 +2099,14 @@
|
|
|
1878
2099
|
"type": "boolean"
|
|
1879
2100
|
}
|
|
1880
2101
|
},
|
|
2102
|
+
{
|
|
2103
|
+
"name": "unsigned",
|
|
2104
|
+
"description": "Refuses the leading minus a numeric or decimal field otherwise takes. It narrows the type's own filter rather than replacing it, so a decimal still keeps one separator and still answers with a dot. Meaningless on any other type, where the sign is the native control's business, and a declared keep or reject still outranks it.",
|
|
2105
|
+
"value": {
|
|
2106
|
+
"kind": "plain",
|
|
2107
|
+
"type": "boolean"
|
|
2108
|
+
}
|
|
2109
|
+
},
|
|
1881
2110
|
{
|
|
1882
2111
|
"name": "autocomplete",
|
|
1883
2112
|
"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.",
|
|
@@ -1886,6 +2115,22 @@
|
|
|
1886
2115
|
"type": "string"
|
|
1887
2116
|
}
|
|
1888
2117
|
},
|
|
2118
|
+
{
|
|
2119
|
+
"name": "operator",
|
|
2120
|
+
"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.",
|
|
2121
|
+
"value": {
|
|
2122
|
+
"kind": "plain",
|
|
2123
|
+
"type": "string"
|
|
2124
|
+
}
|
|
2125
|
+
},
|
|
2126
|
+
{
|
|
2127
|
+
"name": "sensitivity",
|
|
2128
|
+
"description": "Fixes the case sensitivity for the element's life, on the operator's terms: the button leaves and every tuple carries it.",
|
|
2129
|
+
"value": {
|
|
2130
|
+
"kind": "plain",
|
|
2131
|
+
"type": "string"
|
|
2132
|
+
}
|
|
2133
|
+
},
|
|
1889
2134
|
{
|
|
1890
2135
|
"name": "disabled",
|
|
1891
2136
|
"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.",
|
|
@@ -1969,8 +2214,8 @@
|
|
|
1969
2214
|
]
|
|
1970
2215
|
},
|
|
1971
2216
|
{
|
|
1972
|
-
"name": "ful-
|
|
1973
|
-
"description": "A
|
|
2217
|
+
"name": "ful-filter-in",
|
|
2218
|
+
"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 value is an array whether one key was chosen or several, an empty selection contributing nothing rather than an empty array. It picks one key unless multiple is declared, as a ful-select does.",
|
|
1974
2219
|
"attributes": [
|
|
1975
2220
|
{
|
|
1976
2221
|
"name": "name",
|
|
@@ -1990,15 +2235,135 @@
|
|
|
1990
2235
|
},
|
|
1991
2236
|
{
|
|
1992
2237
|
"name": "k-type",
|
|
1993
|
-
"description": "How a key coerces when it arrives from the response or from the value attribute: number, string or
|
|
2238
|
+
"description": "How a key coerces when it arrives from the response or from the value attribute: number, string or boolean.",
|
|
2239
|
+
"value": {
|
|
2240
|
+
"kind": "plain",
|
|
2241
|
+
"type": "string"
|
|
2242
|
+
}
|
|
2243
|
+
},
|
|
2244
|
+
{
|
|
2245
|
+
"name": "mode",
|
|
2246
|
+
"description": "chunked asks the endpoint per query instead of fetching the vocabulary once, for a list too large to hold.",
|
|
2247
|
+
"value": {
|
|
2248
|
+
"kind": "plain",
|
|
2249
|
+
"type": "string"
|
|
2250
|
+
}
|
|
2251
|
+
},
|
|
2252
|
+
{
|
|
2253
|
+
"name": "preload",
|
|
2254
|
+
"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.",
|
|
2255
|
+
"value": {
|
|
2256
|
+
"kind": "plain",
|
|
2257
|
+
"type": "boolean"
|
|
2258
|
+
}
|
|
2259
|
+
},
|
|
2260
|
+
{
|
|
2261
|
+
"name": "revision",
|
|
2262
|
+
"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.",
|
|
1994
2263
|
"value": {
|
|
1995
2264
|
"kind": "plain",
|
|
1996
2265
|
"type": "string"
|
|
1997
2266
|
}
|
|
1998
2267
|
},
|
|
2268
|
+
{
|
|
2269
|
+
"name": "k-expr",
|
|
2270
|
+
"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.",
|
|
2271
|
+
"value": {
|
|
2272
|
+
"kind": "plain",
|
|
2273
|
+
"type": "string"
|
|
2274
|
+
}
|
|
2275
|
+
},
|
|
2276
|
+
{
|
|
2277
|
+
"name": "l-expr",
|
|
2278
|
+
"description": "The expression yielding an option's label, evaluated against each row of the response.",
|
|
2279
|
+
"value": {
|
|
2280
|
+
"kind": "plain",
|
|
2281
|
+
"type": "string"
|
|
2282
|
+
}
|
|
2283
|
+
},
|
|
2284
|
+
{
|
|
2285
|
+
"name": "d-expr",
|
|
2286
|
+
"description": "The expression yielding the rows from the response body; the body itself when absent.",
|
|
2287
|
+
"value": {
|
|
2288
|
+
"kind": "plain",
|
|
2289
|
+
"type": "string"
|
|
2290
|
+
}
|
|
2291
|
+
},
|
|
2292
|
+
{
|
|
2293
|
+
"name": "m-expr",
|
|
2294
|
+
"description": "The expression yielding an option's metadata, evaluated against each row; the whole row when absent.",
|
|
2295
|
+
"value": {
|
|
2296
|
+
"kind": "plain",
|
|
2297
|
+
"type": "string"
|
|
2298
|
+
}
|
|
2299
|
+
},
|
|
2300
|
+
{
|
|
2301
|
+
"name": "response-mapper",
|
|
2302
|
+
"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.",
|
|
2303
|
+
"value": {
|
|
2304
|
+
"kind": "plain",
|
|
2305
|
+
"type": "string"
|
|
2306
|
+
}
|
|
2307
|
+
},
|
|
2308
|
+
{
|
|
2309
|
+
"name": "operator",
|
|
2310
|
+
"description": "A fixed operator sent in front of the chosen keys, for the field a compare reads rather than a set: absent the value is the bare array an InEnum or an InList takes, present it is [operator, ...keys]. No menu is rendered either way, the operator being the author naming the server's comparison rather than a choice offered to whoever is filtering. The criterion reports it, so a chip can show it.",
|
|
2311
|
+
"value": {
|
|
2312
|
+
"kind": "plain",
|
|
2313
|
+
"type": "string"
|
|
2314
|
+
}
|
|
2315
|
+
},
|
|
2316
|
+
{
|
|
2317
|
+
"name": "disabled",
|
|
2318
|
+
"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.",
|
|
2319
|
+
"value": {
|
|
2320
|
+
"kind": "plain",
|
|
2321
|
+
"type": "boolean"
|
|
2322
|
+
}
|
|
2323
|
+
},
|
|
2324
|
+
{
|
|
2325
|
+
"name": "readonly",
|
|
2326
|
+
"description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
|
|
2327
|
+
"value": {
|
|
2328
|
+
"kind": "plain",
|
|
2329
|
+
"type": "boolean"
|
|
2330
|
+
}
|
|
2331
|
+
},
|
|
2332
|
+
{
|
|
2333
|
+
"name": "required",
|
|
2334
|
+
"description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
|
|
2335
|
+
"value": {
|
|
2336
|
+
"kind": "plain",
|
|
2337
|
+
"type": "boolean"
|
|
2338
|
+
}
|
|
2339
|
+
},
|
|
2340
|
+
{
|
|
2341
|
+
"name": "value",
|
|
2342
|
+
"description": "Comma separated list of the selected keys. Empty contributes nothing, so the table drops the filter rather than sending an empty set.",
|
|
2343
|
+
"value": {
|
|
2344
|
+
"kind": "plain",
|
|
2345
|
+
"type": "string"
|
|
2346
|
+
}
|
|
2347
|
+
},
|
|
2348
|
+
{
|
|
2349
|
+
"name": "multiple",
|
|
2350
|
+
"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.",
|
|
2351
|
+
"value": {
|
|
2352
|
+
"kind": "plain",
|
|
2353
|
+
"type": "boolean"
|
|
2354
|
+
}
|
|
2355
|
+
},
|
|
2356
|
+
{
|
|
2357
|
+
"name": "item-list",
|
|
2358
|
+
"description": "Shows the selection as a ful-item-list under the control. For a multiple select the list replaces the ful-badge chips, which it hides; a single select keeps its label in the field as well.",
|
|
2359
|
+
"value": {
|
|
2360
|
+
"kind": "plain",
|
|
2361
|
+
"type": "boolean"
|
|
2362
|
+
}
|
|
2363
|
+
},
|
|
1999
2364
|
{
|
|
2000
2365
|
"name": "src",
|
|
2001
|
-
"description": "The url the vocabulary is fetched from. Without it the slotted <option> elements are the whole vocabulary, held in memory.",
|
|
2366
|
+
"description": "The url the vocabulary is fetched from. Without it the slotted <option> elements are the whole vocabulary, held in memory. Stays live: writing it builds the loader again and reloads as reload() does, dropping a selected key the new vocabulary does not know.",
|
|
2002
2367
|
"value": {
|
|
2003
2368
|
"kind": "plain",
|
|
2004
2369
|
"type": "string"
|
|
@@ -2006,7 +2371,65 @@
|
|
|
2006
2371
|
},
|
|
2007
2372
|
{
|
|
2008
2373
|
"name": "method",
|
|
2009
|
-
"description": "The method the vocabulary is fetched with; POST when absent.",
|
|
2374
|
+
"description": "The method the vocabulary is fetched with; POST when absent. Stays live, as src does.",
|
|
2375
|
+
"value": {
|
|
2376
|
+
"kind": "plain",
|
|
2377
|
+
"type": "string"
|
|
2378
|
+
}
|
|
2379
|
+
}
|
|
2380
|
+
],
|
|
2381
|
+
"slots": [
|
|
2382
|
+
{
|
|
2383
|
+
"name": "default",
|
|
2384
|
+
"description": "The label of the field."
|
|
2385
|
+
},
|
|
2386
|
+
{
|
|
2387
|
+
"name": "info",
|
|
2388
|
+
"description": "Extra content rendered next to the label, for a hint or a help icon."
|
|
2389
|
+
},
|
|
2390
|
+
{
|
|
2391
|
+
"name": "before",
|
|
2392
|
+
"description": "An addon rendered inside the input group, before the control."
|
|
2393
|
+
},
|
|
2394
|
+
{
|
|
2395
|
+
"name": "after",
|
|
2396
|
+
"description": "An addon rendered inside the input group, after the control."
|
|
2397
|
+
},
|
|
2398
|
+
{
|
|
2399
|
+
"name": "dropdown",
|
|
2400
|
+
"description": "Replaces the template used to render the options."
|
|
2401
|
+
}
|
|
2402
|
+
],
|
|
2403
|
+
"events": [
|
|
2404
|
+
{
|
|
2405
|
+
"name": "change",
|
|
2406
|
+
"description": "Fired with the selected keys, or undefined when nothing is picked."
|
|
2407
|
+
}
|
|
2408
|
+
]
|
|
2409
|
+
},
|
|
2410
|
+
{
|
|
2411
|
+
"name": "ful-select",
|
|
2412
|
+
"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.",
|
|
2413
|
+
"attributes": [
|
|
2414
|
+
{
|
|
2415
|
+
"name": "name",
|
|
2416
|
+
"description": "The field name the surrounding form submits the selection under.",
|
|
2417
|
+
"value": {
|
|
2418
|
+
"kind": "plain",
|
|
2419
|
+
"type": "string"
|
|
2420
|
+
}
|
|
2421
|
+
},
|
|
2422
|
+
{
|
|
2423
|
+
"name": "loader",
|
|
2424
|
+
"description": "The registered component name the select loads its vocabulary through; loaders:select when absent.",
|
|
2425
|
+
"value": {
|
|
2426
|
+
"kind": "plain",
|
|
2427
|
+
"type": "string"
|
|
2428
|
+
}
|
|
2429
|
+
},
|
|
2430
|
+
{
|
|
2431
|
+
"name": "k-type",
|
|
2432
|
+
"description": "How a key coerces when it arrives from the response or from the value attribute: number, string or boolean.",
|
|
2010
2433
|
"value": {
|
|
2011
2434
|
"kind": "plain",
|
|
2012
2435
|
"type": "string"
|
|
@@ -2030,7 +2453,7 @@
|
|
|
2030
2453
|
},
|
|
2031
2454
|
{
|
|
2032
2455
|
"name": "revision",
|
|
2033
|
-
"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.",
|
|
2456
|
+
"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.",
|
|
2034
2457
|
"value": {
|
|
2035
2458
|
"kind": "plain",
|
|
2036
2459
|
"type": "string"
|
|
@@ -2102,7 +2525,7 @@
|
|
|
2102
2525
|
},
|
|
2103
2526
|
{
|
|
2104
2527
|
"name": "value",
|
|
2105
|
-
"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.",
|
|
2528
|
+
"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.",
|
|
2106
2529
|
"value": {
|
|
2107
2530
|
"kind": "plain",
|
|
2108
2531
|
"type": "string"
|
|
@@ -2118,11 +2541,27 @@
|
|
|
2118
2541
|
},
|
|
2119
2542
|
{
|
|
2120
2543
|
"name": "item-list",
|
|
2121
|
-
"description": "Shows the selection as a ful-item-list under the control
|
|
2544
|
+
"description": "Shows the selection as a ful-item-list under the control. For a multiple select the list replaces the ful-badge chips, which it hides; a single select keeps its label in the field as well.",
|
|
2122
2545
|
"value": {
|
|
2123
2546
|
"kind": "plain",
|
|
2124
2547
|
"type": "boolean"
|
|
2125
2548
|
}
|
|
2549
|
+
},
|
|
2550
|
+
{
|
|
2551
|
+
"name": "src",
|
|
2552
|
+
"description": "The url the vocabulary is fetched from. Without it the slotted <option> elements are the whole vocabulary, held in memory. Stays live: writing it builds the loader again and reloads as reload() does, dropping a selected key the new vocabulary does not know.",
|
|
2553
|
+
"value": {
|
|
2554
|
+
"kind": "plain",
|
|
2555
|
+
"type": "string"
|
|
2556
|
+
}
|
|
2557
|
+
},
|
|
2558
|
+
{
|
|
2559
|
+
"name": "method",
|
|
2560
|
+
"description": "The method the vocabulary is fetched with; POST when absent. Stays live, as src does.",
|
|
2561
|
+
"value": {
|
|
2562
|
+
"kind": "plain",
|
|
2563
|
+
"type": "string"
|
|
2564
|
+
}
|
|
2126
2565
|
}
|
|
2127
2566
|
],
|
|
2128
2567
|
"slots": [
|
|
@@ -2156,7 +2595,7 @@
|
|
|
2156
2595
|
},
|
|
2157
2596
|
{
|
|
2158
2597
|
"name": "ful-dropdown",
|
|
2159
|
-
"description": "The options popup of a ful-select, with a localized no-results message when the search matches nothing. Rarely used on its own.",
|
|
2598
|
+
"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.",
|
|
2160
2599
|
"attributes": [
|
|
2161
2600
|
{
|
|
2162
2601
|
"name": "listbox",
|