@optionfactory/fml 9.0.0-rc28 → 9.0.0-rc29
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/dist/client-errors.iife.js +21 -16
- 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 +16 -16
- package/dist/fml.css +13 -13
- package/dist/fml.css.map +1 -1
- package/dist/fml.iife.js +871 -883
- 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 +3 -3
- package/dist/ftl.iife.js +275 -679
- 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 +275 -679
- package/dist/ftl.mjs.map +1 -1
- package/dist/ful.css +13 -13
- package/dist/ful.css.map +1 -1
- package/dist/ful.d.mts +195 -71
- package/dist/ful.iife.js +564 -189
- 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 +564 -189
- package/dist/ful.mjs.map +1 -1
- package/dist/httpc.d.mts +9 -7
- package/dist/httpc.iife.js +32 -15
- 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 +32 -15
- package/dist/httpc.mjs.map +1 -1
- package/dist/vscode.html-custom-data.json +13 -13
- package/dist/web-types.json +17 -17
- package/package.json +2 -2
package/dist/ful.d.mts
CHANGED
|
@@ -361,7 +361,9 @@ declare class Bindings {
|
|
|
361
361
|
* alone and a composite field named for a prefix catches the problems of its
|
|
362
362
|
* subtree. Each control of that name gets `setCustomValidity(reason, rest)`,
|
|
363
363
|
* `rest` being the remainder of the path (`''` on an exact match) that a
|
|
364
|
-
* composite can use to route the problem to an inner control.
|
|
364
|
+
* composite can use to route the problem to an inner control. Several
|
|
365
|
+
* problems reaching one control with the same `rest` are joined one per
|
|
366
|
+
* line into a single call.
|
|
365
367
|
*
|
|
366
368
|
* A control counts only when it can show a problem, through a
|
|
367
369
|
* `setCustomValidity` of its own: a form-associated element that has none is
|
|
@@ -376,7 +378,8 @@ declare class Bindings {
|
|
|
376
378
|
* Each `ful-field-error` of the form gets `aria-live="off"` when
|
|
377
379
|
* `scrollOnError` is set, since focusing the field announces its error, and
|
|
378
380
|
* `aria-live="polite"` otherwise. With `scrollOnError` and at least one
|
|
379
|
-
* problem, the topmost `:invalid` control is focused
|
|
381
|
+
* problem, the topmost `:invalid` control is focused; a `<fieldset>`
|
|
382
|
+
* matching `:invalid` for the controls it holds is not a candidate.
|
|
380
383
|
*
|
|
381
384
|
* A banner or `ful-field-error` belongs to the nearest enclosing form, so
|
|
382
385
|
* those of a nested form are left alone.
|
|
@@ -403,9 +406,12 @@ declare class Bindings {
|
|
|
403
406
|
*
|
|
404
407
|
* The claim setters, the validity protocol and the aria wiring all act on the
|
|
405
408
|
* pieces, so a field with no native control returns a focusable piece of its
|
|
406
|
-
* own chrome as the control. The
|
|
407
|
-
* members that tolerate a not yet rendered element
|
|
408
|
-
*
|
|
409
|
+
* own chrome as the control. The claims, `value` and `focus()` are the
|
|
410
|
+
* members that tolerate a not yet rendered element: before the render the
|
|
411
|
+
* `value` getter answers what the rendered field would answer from its current
|
|
412
|
+
* declared state, and a value written then is held and applied by the render
|
|
413
|
+
* (see `_holdValue`). The other members need the pieces and so work only after
|
|
414
|
+
* the render.
|
|
409
415
|
*
|
|
410
416
|
* The inner controls carry `form=""`, so the host is the only element the form
|
|
411
417
|
* sees. Enter pressed in an inner `<input>` of any type but `file`, `button`,
|
|
@@ -517,11 +523,35 @@ declare class Field extends ParsedElement {
|
|
|
517
523
|
* @returns {boolean}
|
|
518
524
|
*/
|
|
519
525
|
_interactive(): boolean;
|
|
526
|
+
/**
|
|
527
|
+
* Upgrades as `ParsedElement.upgrade` does, then writes the value held by
|
|
528
|
+
* `_holdValue`, if any, through the `value` setter: the value written
|
|
529
|
+
* before the render wins over the declared one.
|
|
530
|
+
* @returns {Promise<void>} rejecting with what the render threw
|
|
531
|
+
*/
|
|
532
|
+
upgrade(): Promise<void>;
|
|
533
|
+
/**
|
|
534
|
+
* Keeps a value written before the field has its control, for a subclass's
|
|
535
|
+
* `value` setter to call in place of writing it: the upgrade writes it
|
|
536
|
+
* through the setter once the field has rendered, over the declared one.
|
|
537
|
+
* The `value` attribute is left alone, so a reset still restores it.
|
|
538
|
+
* @param {any} value
|
|
539
|
+
*/
|
|
540
|
+
_holdValue(value: any): void;
|
|
541
|
+
/**
|
|
542
|
+
* The value a subclass's `value` getter shapes before the field has its
|
|
543
|
+
* control: the one `_holdValue` kept, else the declared `value` attribute
|
|
544
|
+
* read through its mapper.
|
|
545
|
+
* @returns {any}
|
|
546
|
+
*/
|
|
547
|
+
_heldValue(): any;
|
|
520
548
|
/**
|
|
521
549
|
* The field's value, `null` when empty. Every concrete field overrides the
|
|
522
550
|
* pair with its own semantics; the form extraction, `values =` assignment,
|
|
523
551
|
* the `change` detail and `formResetCallback` all go through it. The base
|
|
524
|
-
* pair reads `undefined` and ignores writes.
|
|
552
|
+
* pair reads `undefined` and ignores writes. A concrete field answers and
|
|
553
|
+
* takes its value before the render too, through `_heldValue` and
|
|
554
|
+
* `_holdValue`.
|
|
525
555
|
* @type {any}
|
|
526
556
|
*/
|
|
527
557
|
get value(): any;
|
|
@@ -766,7 +796,7 @@ declare class Form extends ParsedElement {
|
|
|
766
796
|
connectedCallback(): void;
|
|
767
797
|
disconnectedCallback(): void;
|
|
768
798
|
/**
|
|
769
|
-
* Runs the submit pipeline, with the spinner up
|
|
799
|
+
* Runs the submit pipeline, with the spinner up until its outcome:
|
|
770
800
|
*
|
|
771
801
|
* 1. builds the loader: the component the `loader` attribute names
|
|
772
802
|
* (`loaders:form` by default), called as `create(form)`
|
|
@@ -783,8 +813,8 @@ declare class Form extends ParsedElement {
|
|
|
783
813
|
* 6. has the loader `submit` the request and `transform` the response
|
|
784
814
|
* 7. under `track-changes`, commits the values extracted at step 2 (see
|
|
785
815
|
* `commit`): an edit made while the submit was in flight stays unsaved
|
|
786
|
-
* 8. fires `submit:success` with `{ submitter,
|
|
787
|
-
* `response` being the transformed one
|
|
816
|
+
* 8. releases the spinner and fires `submit:success` with `{ submitter,
|
|
817
|
+
* values, request, response }`, `response` being the transformed one
|
|
788
818
|
*
|
|
789
819
|
* Anything thrown from step 1 on, a missing loader or a throwing mapper
|
|
790
820
|
* included, fires `submit:failure` with `{ submitter, values, request,
|
|
@@ -793,6 +823,11 @@ declare class Form extends ParsedElement {
|
|
|
793
823
|
* `console.warn`. The `values` of both outcome events are the extracted
|
|
794
824
|
* ones, not a replacement a `submit` listener put on its detail.
|
|
795
825
|
*
|
|
826
|
+
* The form settles before either outcome event (0016): its listeners see
|
|
827
|
+
* the spinner released and the buttons no longer held off, the problems of
|
|
828
|
+
* a `Failure` already shown, and the submit no longer in flight, so one
|
|
829
|
+
* of them may submit again.
|
|
830
|
+
*
|
|
796
831
|
* A call while a submit is in flight returns at once, doing nothing.
|
|
797
832
|
* @param {HTMLElement} [submitter] the button that submitted, if any; it is
|
|
798
833
|
* the only button whose name and value are submitted
|
|
@@ -813,8 +848,9 @@ declare class Form extends ParsedElement {
|
|
|
813
848
|
save(submitter?: HTMLElement): Promise<boolean>;
|
|
814
849
|
/**
|
|
815
850
|
* Resets the native form, each field returning to its default value. Under
|
|
816
|
-
* `track-changes`
|
|
817
|
-
*
|
|
851
|
+
* `track-changes` a reset, this one or a native reset button's, counts
|
|
852
|
+
* every control as edited: the form is dirty if the defaults differ from
|
|
853
|
+
* what was last committed.
|
|
818
854
|
*/
|
|
819
855
|
reset(): void;
|
|
820
856
|
/**
|
|
@@ -977,8 +1013,12 @@ declare class Input extends Field {
|
|
|
977
1013
|
* `v-type="number"`, where text that does not decode is answered as it is.
|
|
978
1014
|
* Writing `null`, `undefined` or `''` empties the control; anything else is
|
|
979
1015
|
* written as its string, replacing whatever was being typed, as a native
|
|
980
|
-
* control's value does
|
|
981
|
-
* `
|
|
1016
|
+
* control's value does, and is not an edit: a date or time control that
|
|
1017
|
+
* has the focus reports no `change` for it when it is left. Answers a
|
|
1018
|
+
* `string`, a `number` or `null`; typed `any` because subclasses answer
|
|
1019
|
+
* other values. Before the render the same shaping reads the value last
|
|
1020
|
+
* written, or the `value` attribute, as its text, and a write is held for
|
|
1021
|
+
* the render to apply.
|
|
982
1022
|
* @type {any}
|
|
983
1023
|
*/
|
|
984
1024
|
get value(): any;
|
|
@@ -1098,7 +1138,9 @@ declare class InputInstant extends Input {
|
|
|
1098
1138
|
static observed: string[];
|
|
1099
1139
|
_type(): string;
|
|
1100
1140
|
/**
|
|
1101
|
-
* The entered time as a UTC ISO instant.
|
|
1141
|
+
* The entered time as a UTC ISO instant. Before the render it answers the
|
|
1142
|
+
* value last written, or the `value` attribute, as the rendered field
|
|
1143
|
+
* would, and a write is held for the render to apply.
|
|
1102
1144
|
* @returns {string|null} null when empty or when the input holds text that does not parse
|
|
1103
1145
|
*/
|
|
1104
1146
|
get value(): string | null;
|
|
@@ -1206,7 +1248,7 @@ declare class InputFile extends Input {
|
|
|
1206
1248
|
/** @param {boolean} v */
|
|
1207
1249
|
set multiple(v: boolean);
|
|
1208
1250
|
/**
|
|
1209
|
-
* The selected files, after the constraints.
|
|
1251
|
+
* The selected files, after the constraints; none before the render.
|
|
1210
1252
|
* @returns {FileList}
|
|
1211
1253
|
*/
|
|
1212
1254
|
get files(): FileList;
|
|
@@ -1228,13 +1270,14 @@ declare class InputFile extends Input {
|
|
|
1228
1270
|
set file(v: File | null | undefined);
|
|
1229
1271
|
/**
|
|
1230
1272
|
* The names of the selected files: an array when `multiple`, otherwise the
|
|
1231
|
-
* one name or null.
|
|
1273
|
+
* one name or null. Before the render no file is selected yet.
|
|
1232
1274
|
* @returns {string[]|string|null}
|
|
1233
1275
|
*/
|
|
1234
1276
|
get value(): string[] | string | null;
|
|
1235
1277
|
/**
|
|
1236
1278
|
* Empties the selection for a falsy value and ignores any other, since a
|
|
1237
|
-
* file name cannot select a file.
|
|
1279
|
+
* file name cannot select a file. Before the render there is nothing to
|
|
1280
|
+
* empty, so it does nothing.
|
|
1238
1281
|
* @param {any} v
|
|
1239
1282
|
*/
|
|
1240
1283
|
set value(v: any);
|
|
@@ -1338,7 +1381,8 @@ declare class Anchors {
|
|
|
1338
1381
|
* which light dismiss then closes with no script of your own. The popover
|
|
1339
1382
|
* is given the generated id when it has none. A `button` or `input`
|
|
1340
1383
|
* invoker gets a `popovertarget` naming it; any other element toggles it
|
|
1341
|
-
* on click and on the Enter and Space keys
|
|
1384
|
+
* on click and on the Enter and Space keys; a click on it while the
|
|
1385
|
+
* popover is open closes the popover rather than opening it again
|
|
1342
1386
|
* @param {boolean} [options.expanded] sets the invoker's `aria-expanded` to
|
|
1343
1387
|
* `false` at once and keeps it in step with the popover's `toggle` events
|
|
1344
1388
|
* @param {boolean} [options.stretch] in the script placement, sizes the
|
|
@@ -1428,7 +1472,8 @@ declare class RemoteLoader {
|
|
|
1428
1472
|
*/
|
|
1429
1473
|
prefetch(): Promise<void>;
|
|
1430
1474
|
/**
|
|
1431
|
-
* The entries whose key
|
|
1475
|
+
* The entries whose key reads as the same text as one of the keys, in
|
|
1476
|
+
* vocabulary order.
|
|
1432
1477
|
* @param {...any} keys
|
|
1433
1478
|
* @returns {Promise<SelectEntry[]>}
|
|
1434
1479
|
* @throws when the fetch fails, or when an invalidation supersedes it
|
|
@@ -1503,7 +1548,8 @@ declare class InMemoryLoader {
|
|
|
1503
1548
|
*/
|
|
1504
1549
|
invalidate(): Promise<void>;
|
|
1505
1550
|
/**
|
|
1506
|
-
* The entries whose key
|
|
1551
|
+
* The entries whose key reads as the same text as one of the keys, in
|
|
1552
|
+
* vocabulary order.
|
|
1507
1553
|
* @param {...any} keys
|
|
1508
1554
|
* @returns {SelectEntry[]}
|
|
1509
1555
|
*/
|
|
@@ -1635,14 +1681,16 @@ declare class Dropdown extends ParsedElement {
|
|
|
1635
1681
|
}): void;
|
|
1636
1682
|
/**
|
|
1637
1683
|
* Picks the highlighted row, or the first enabled one when none is: hides
|
|
1638
|
-
* the dropdown and dispatches `change`. Does nothing when
|
|
1684
|
+
* the dropdown and dispatches `change`. Does nothing when the highlighted
|
|
1685
|
+
* row is disabled, when no row is enabled, or while a search is loading
|
|
1686
|
+
* and the rows are hidden.
|
|
1639
1687
|
*/
|
|
1640
1688
|
acceptSelection(): void;
|
|
1641
1689
|
/**
|
|
1642
1690
|
* Renders the entries as rows and highlights the first one whose key is
|
|
1643
1691
|
* picked, else the row the template marked `selected`, else the first
|
|
1644
1692
|
* enabled row. A row is marked `picked` and
|
|
1645
|
-
* `aria-selected="true"` when its key
|
|
1693
|
+
* `aria-selected="true"` when its key reads as the same text as one of the keys, and
|
|
1646
1694
|
* `aria-disabled="true"` when its `metadata.disabled` is truthy, titled with
|
|
1647
1695
|
* `metadata.reason`. No entries shows the empty state instead of the menu.
|
|
1648
1696
|
* @param {SelectEntry[]} values
|
|
@@ -1675,7 +1723,8 @@ declare class Dropdown extends ParsedElement {
|
|
|
1675
1723
|
show(loader: () => SelectEntry[] | Promise<SelectEntry[]>, keys?: any[]): Promise<void>;
|
|
1676
1724
|
/**
|
|
1677
1725
|
* Moves the highlight to the next or previous enabled row when the dropdown
|
|
1678
|
-
* is shown, staying put at the edge
|
|
1726
|
+
* is shown, staying put at the edge and while a search is loading, and
|
|
1727
|
+
* shows it otherwise.
|
|
1679
1728
|
* @param {boolean} forward
|
|
1680
1729
|
* @param {() => SelectEntry[]|Promise<SelectEntry[]>} loader used only to show
|
|
1681
1730
|
* @param {any[]} [keys] the keys currently selected, used only to show
|
|
@@ -1684,13 +1733,15 @@ declare class Dropdown extends ParsedElement {
|
|
|
1684
1733
|
*/
|
|
1685
1734
|
moveOrShow(forward: boolean, loader: () => SelectEntry[] | Promise<SelectEntry[]>, keys?: any[]): Promise<void>;
|
|
1686
1735
|
/**
|
|
1687
|
-
* Highlights the first enabled row, or the last one.
|
|
1736
|
+
* Highlights the first enabled row, or the last one. Does nothing while a
|
|
1737
|
+
* search is loading and the rows are hidden.
|
|
1688
1738
|
* @param {boolean} first
|
|
1689
1739
|
*/
|
|
1690
1740
|
jump(first: boolean): void;
|
|
1691
1741
|
/**
|
|
1692
1742
|
* Moves the highlight by as many enabled rows as the menu shows at once,
|
|
1693
1743
|
* one when that cannot be measured, stopping at the last enabled row.
|
|
1744
|
+
* Does nothing while a search is loading.
|
|
1694
1745
|
* @param {boolean} forward
|
|
1695
1746
|
*/
|
|
1696
1747
|
page(forward: boolean): void;
|
|
@@ -1780,12 +1831,14 @@ declare class Select extends Field {
|
|
|
1780
1831
|
* another control needs when that control changes. A key the loader no
|
|
1781
1832
|
* longer knows is dropped from the selection, so a value invalidated by the
|
|
1782
1833
|
* change does not survive it, and one it still knows keeps its place with a
|
|
1783
|
-
* fresh label. The badges and items follow,
|
|
1834
|
+
* fresh label. The badges and items follow, an open dropdown runs its
|
|
1835
|
+
* search again, and no `change` is dispatched.
|
|
1784
1836
|
*
|
|
1785
1837
|
* Where the vocabulary lives at a different address, write `src` or call
|
|
1786
1838
|
* `reconfigure`, which build the loader for the new url and reload.
|
|
1787
1839
|
* @returns {Promise<void>}
|
|
1788
|
-
* @throws what the loader's invalidate, prefetch
|
|
1840
|
+
* @throws what the loader's invalidate, prefetch, key lookup or search
|
|
1841
|
+
* throws
|
|
1789
1842
|
*/
|
|
1790
1843
|
reload(): Promise<void>;
|
|
1791
1844
|
/**
|
|
@@ -1852,20 +1905,23 @@ declare class Select extends Field {
|
|
|
1852
1905
|
get query(): string;
|
|
1853
1906
|
/**
|
|
1854
1907
|
* Selects the keys, coerced by `k-type`: a key, an array of keys, or null or
|
|
1855
|
-
* undefined for none. The empty string is a key like any other
|
|
1856
|
-
* are applied at once, each labeled by itself until the loader's `exact`
|
|
1908
|
+
* undefined for none. The empty string is a key like any other, and a
|
|
1909
|
+
* single select keeps only the first key. The keys are applied at once, each labeled by itself until the loader's `exact`
|
|
1857
1910
|
* answers; a key it does not answer is then dropped, a key removed in the
|
|
1858
1911
|
* meantime stays removed, and a later assignment wins over the late answer.
|
|
1859
1912
|
* A failed lookup keeps the keys and surfaces as an unhandled rejection.
|
|
1860
1913
|
* No `change` is dispatched. A key containing a
|
|
1861
1914
|
* comma, which the value attribute cannot carry, is kept and warned about
|
|
1862
|
-
* once per element.
|
|
1915
|
+
* once per element. Before the render the write is held for the render to
|
|
1916
|
+
* apply, over the `value` attribute, which it leaves alone.
|
|
1863
1917
|
* @param {any} vs
|
|
1864
1918
|
*/
|
|
1865
1919
|
set value(vs: any);
|
|
1866
1920
|
/**
|
|
1867
1921
|
* The selected keys, in selection order, for a multiple select; the one
|
|
1868
|
-
* key, or null, for a single one.
|
|
1922
|
+
* key, or null, for a single one. Before the render it answers the keys
|
|
1923
|
+
* last written, or the `value` attribute, coerced and cut to one key as the
|
|
1924
|
+
* rendered select would.
|
|
1869
1925
|
* @returns {any}
|
|
1870
1926
|
*/
|
|
1871
1927
|
get value(): any;
|
|
@@ -1876,14 +1932,32 @@ declare class Select extends Field {
|
|
|
1876
1932
|
* @returns {SelectEntry|SelectEntry[]|null}
|
|
1877
1933
|
*/
|
|
1878
1934
|
get entry(): SelectEntry | SelectEntry[] | null;
|
|
1935
|
+
/**
|
|
1936
|
+
* The field's disabled claim; turning it on while the dropdown is open
|
|
1937
|
+
* closes it and drops a pending search.
|
|
1938
|
+
* @type {boolean}
|
|
1939
|
+
*/
|
|
1940
|
+
get disabled(): boolean;
|
|
1941
|
+
set disabled(v: boolean);
|
|
1942
|
+
/**
|
|
1943
|
+
* The field's readonly claim; turning it on while the dropdown is open
|
|
1944
|
+
* closes it and drops a pending search.
|
|
1945
|
+
* @type {boolean}
|
|
1946
|
+
*/
|
|
1947
|
+
get readonly(): boolean;
|
|
1948
|
+
set readonly(v: boolean);
|
|
1879
1949
|
/**
|
|
1880
1950
|
* Whether the select holds several keys: `value` and `entry` answer arrays,
|
|
1881
1951
|
* the input stays empty and the selection shows as removable badges in the
|
|
1882
|
-
* control.
|
|
1952
|
+
* control. Before the render it answers the `multiple` attribute.
|
|
1883
1953
|
* @returns {boolean}
|
|
1884
1954
|
*/
|
|
1885
1955
|
get multiple(): boolean;
|
|
1886
|
-
/**
|
|
1956
|
+
/**
|
|
1957
|
+
* Turning it off keeps only the first selected key; either way the badges,
|
|
1958
|
+
* the items and the input follow at once.
|
|
1959
|
+
* @param {boolean} v
|
|
1960
|
+
*/
|
|
1887
1961
|
set multiple(v: boolean);
|
|
1888
1962
|
/**
|
|
1889
1963
|
* Whether the selection shows as the `items` list below the control instead
|
|
@@ -1899,10 +1973,10 @@ declare class Select extends Field {
|
|
|
1899
1973
|
* a radio input carrying its attributes, labelled by its content; every
|
|
1900
1974
|
* `input-*` attribute on the group is forwarded onto each radio as well. The
|
|
1901
1975
|
* default slot is the `<legend>`, and `header` and `footer` slots frame the
|
|
1902
|
-
* list. The radios share a name of their own
|
|
1903
|
-
* when there is
|
|
1904
|
-
*
|
|
1905
|
-
* group's own.
|
|
1976
|
+
* list. The radios share a name of their own, minted afresh for each group
|
|
1977
|
+
* (from `name` when there is one) so that same-named groups stay apart, and
|
|
1978
|
+
* carry `form=""`, so the group is the only element the form sees. A radio's
|
|
1979
|
+
* native `change` is stopped and republished as the group's own.
|
|
1906
1980
|
*
|
|
1907
1981
|
* The host carries the `radiogroup` role, `aria-readonly`, `aria-required`,
|
|
1908
1982
|
* `aria-invalid` and the description. The disabled and readonly claims act on
|
|
@@ -1930,7 +2004,10 @@ declare class RadioGroup extends Field {
|
|
|
1930
2004
|
* The value of the checked radio, `null` when none is. Under
|
|
1931
2005
|
* `type="boolean"` it answers `true` for a radio whose value is `true` and
|
|
1932
2006
|
* `false` for any other. Writing a value checks the radio carrying it, and
|
|
1933
|
-
* writing `null` or a value no radio carries clears the selection.
|
|
2007
|
+
* writing `null` or a value no radio carries clears the selection. Before
|
|
2008
|
+
* the render it answers the value last written, or the `value` attribute,
|
|
2009
|
+
* when a `ful-radio` carries it, and a write is held for the render to
|
|
2010
|
+
* apply.
|
|
1934
2011
|
* @type {string | boolean | null}
|
|
1935
2012
|
*/
|
|
1936
2013
|
get value(): string | boolean | null;
|
|
@@ -1961,7 +2038,9 @@ declare class Checkbox extends Field {
|
|
|
1961
2038
|
}): any;
|
|
1962
2039
|
/**
|
|
1963
2040
|
* Whether the box is checked. The `value` attribute is read with the `bool`
|
|
1964
|
-
* mapper, where only the text `true` means checked.
|
|
2041
|
+
* mapper, where only the text `true` means checked. Before the render it
|
|
2042
|
+
* answers the value last written, or the `value` attribute, and a write is
|
|
2043
|
+
* held for the render to apply.
|
|
1965
2044
|
* @type {boolean}
|
|
1966
2045
|
*/
|
|
1967
2046
|
get value(): boolean;
|
|
@@ -2223,12 +2302,17 @@ declare class TableLoader {
|
|
|
2223
2302
|
* for it. Without it the table shows an initial panel until `load`,
|
|
2224
2303
|
* `reload` or `resetWithFilter` is called.
|
|
2225
2304
|
*
|
|
2226
|
-
* Inside the table a `
|
|
2305
|
+
* Inside the table, and not inside a `ful-table` nested in it, a
|
|
2306
|
+
* `page:requested` loads that page with the current size,
|
|
2227
2307
|
* sort and filters; a `sort:requested` loads the current page with the new
|
|
2228
2308
|
* sort (none for a `null` order) and, once that load is the one showing, sets
|
|
2229
2309
|
* the order of the sorter that asked and clears the others; a `submit:success`
|
|
2230
2310
|
* of the filter form loads the first page with the submitted request as the
|
|
2231
|
-
* filters. The
|
|
2311
|
+
* filters. The first load goes through the filter form too: `reload`, and so
|
|
2312
|
+
* `autoload`, submits it (see `reload`), so a `submit` listener rewriting
|
|
2313
|
+
* `detail.request` shapes every load alike. The filters a page, a sort or a size change carries are those of
|
|
2314
|
+
* the last load asked for, whether it is still running, loaded or failed, so
|
|
2315
|
+
* they are the ones the filter form shows. The loads these start, and the autoload, are not awaited by
|
|
2232
2316
|
* anything: a failure shows the error panel and its rejection is unhandled.
|
|
2233
2317
|
*/
|
|
2234
2318
|
declare class Table extends ParsedElement {
|
|
@@ -2262,10 +2346,12 @@ declare class Table extends ParsedElement {
|
|
|
2262
2346
|
*
|
|
2263
2347
|
* The reload is not awaited: a failure shows the error panel and its
|
|
2264
2348
|
* rejection is unhandled.
|
|
2265
|
-
* @param {number|null|undefined} value
|
|
2266
|
-
*
|
|
2349
|
+
* @param {number|string|null|undefined} value a number or a string of
|
|
2350
|
+
* one, such as a select's value; absent or null is the default of ten,
|
|
2351
|
+
* so removing the attribute restores it, and a value that is not a
|
|
2352
|
+
* number is ignored
|
|
2267
2353
|
*/
|
|
2268
|
-
set pageSize(value: number | null | undefined);
|
|
2354
|
+
set pageSize(value: number | string | null | undefined);
|
|
2269
2355
|
/**
|
|
2270
2356
|
* The url the loader asks for rows, reflected as the `src` attribute.
|
|
2271
2357
|
* @returns {string|null}
|
|
@@ -2320,14 +2406,21 @@ declare class Table extends ParsedElement {
|
|
|
2320
2406
|
}): Promise<void>;
|
|
2321
2407
|
/**
|
|
2322
2408
|
* Loads the last request that loaded, or, before any has, the first page
|
|
2323
|
-
* with the declared size and sort
|
|
2324
|
-
*
|
|
2325
|
-
*
|
|
2409
|
+
* with the declared size and sort. A size written through `pageSize` since
|
|
2410
|
+
* then replaces the page with the first one at that size.
|
|
2411
|
+
*
|
|
2412
|
+
* Before any load has loaded, a table with a `filters` slot submits its
|
|
2413
|
+
* filter form instead, so the first request goes through the same
|
|
2414
|
+
* `submit` listeners as the later ones, and the load its `submit:success`
|
|
2415
|
+
* starts is the one awaited. A filter submit that is cancelled, fails or
|
|
2416
|
+
* is dropped for one in flight loads nothing, and the promise resolves.
|
|
2326
2417
|
* @returns {Promise<void>} as `load`
|
|
2327
2418
|
*/
|
|
2328
2419
|
reload(): Promise<void>;
|
|
2329
2420
|
/**
|
|
2330
|
-
* Asks the loader for a page and shows it.
|
|
2421
|
+
* Asks the loader for a page and shows it. Its filters are, from now on,
|
|
2422
|
+
* the ones a page, a sort or a size change carries, even while it runs
|
|
2423
|
+
* or once it failed.
|
|
2331
2424
|
*
|
|
2332
2425
|
* While the load runs the table carries `aria-busy="true"`, and the rows
|
|
2333
2426
|
* already shown stay; the spinner panel shows only when there are none.
|
|
@@ -2335,7 +2428,8 @@ declare class Table extends ParsedElement {
|
|
|
2335
2428
|
* panel shows for an answer with no rows (the `empty` slot rendered with
|
|
2336
2429
|
* `schema`, `pageRequest`, `filterRequest` and `pageResponse` in scope),
|
|
2337
2430
|
* the request becomes the one
|
|
2338
|
-
* `reload` repeats
|
|
2431
|
+
* `reload` repeats; once the elements of the rows and of the empty panel
|
|
2432
|
+
* have rendered, `aria-busy` is removed and `load:success` is
|
|
2339
2433
|
* dispatched (bubbling, not cancelable) with `detail` set to
|
|
2340
2434
|
* `{ pageRequest, sortRequest, filterRequest, response }`. A page beyond
|
|
2341
2435
|
* the last one the answer reports is not shown: the last page is loaded
|
|
@@ -2349,7 +2443,9 @@ declare class Table extends ParsedElement {
|
|
|
2349
2443
|
* returned promise rejects with the same error.
|
|
2350
2444
|
*
|
|
2351
2445
|
* A load started after this one supersedes it: when this one's answer or
|
|
2352
|
-
* failure arrives it changes nothing, dispatches nothing and resolves
|
|
2446
|
+
* failure arrives it changes nothing, dispatches nothing and resolves;
|
|
2447
|
+
* superseded while its rows render, it leaves them to the newer load and
|
|
2448
|
+
* dispatches nothing.
|
|
2353
2449
|
* @param {TablePageRequest} pageRequest
|
|
2354
2450
|
* @param {TableSortRequest|null} sortRequest
|
|
2355
2451
|
* @param {Record<string, any>} filterRequest
|
|
@@ -2543,7 +2639,8 @@ declare class CompareFilter extends Input {
|
|
|
2543
2639
|
* The operators the menu offers, narrowed to the vocabulary: an empty list,
|
|
2544
2640
|
* or one where no name is known, offers all of it. A single operator pins
|
|
2545
2641
|
* the button, and an assigned tuple then carries that operator whatever it
|
|
2546
|
-
* names.
|
|
2642
|
+
* names. When the operator shown leaves the list, the first listed one is
|
|
2643
|
+
* shown. An assignment made before the upgrade is held narrowed and
|
|
2547
2644
|
* answered back until the render, when the `operators` attribute is applied
|
|
2548
2645
|
* over it, an absent attribute meaning the whole vocabulary. Assignments are
|
|
2549
2646
|
* ignored while the `operator` attribute fixes the operator.
|
|
@@ -2556,17 +2653,27 @@ declare class CompareFilter extends Input {
|
|
|
2556
2653
|
* The filter's tuple, `[operator, operand]` or `[operator, from, to]` for
|
|
2557
2654
|
* BETWEEN, each operand converted by `_serialize` (an ISO instant for the
|
|
2558
2655
|
* instant filter). Null while any operand the operator uses is empty.
|
|
2656
|
+
* Before the render it answers the tuple last written, or the `value`
|
|
2657
|
+
* attribute, as the rendered filter would show it.
|
|
2559
2658
|
* @returns {any[]|null}
|
|
2560
2659
|
*/
|
|
2561
2660
|
get value(): any[] | null;
|
|
2562
2661
|
/**
|
|
2563
|
-
* Shows a tuple: the operator it names,
|
|
2564
|
-
*
|
|
2662
|
+
* Shows a tuple: the operator it names, or the first allowed one where the
|
|
2663
|
+
* whitelist, a pin or a fixed operator does not allow it, and its operands, an operand missing from a shorter tuple
|
|
2565
2664
|
* leaving its input empty. Null or undefined empties both operands and
|
|
2566
|
-
* keeps the operator.
|
|
2665
|
+
* keeps the operator. Before the render the tuple is held for the render
|
|
2666
|
+
* to apply, over the `value` attribute, which it leaves alone.
|
|
2567
2667
|
* @param {any[]|null|undefined} v
|
|
2568
2668
|
*/
|
|
2569
2669
|
set value(v: any[] | null | undefined);
|
|
2670
|
+
/**
|
|
2671
|
+
* The tuple `_tuple` answers once `_applyTuple(v)` has shown `v`, read
|
|
2672
|
+
* from the declared `operator` and `operators` in place of the menu.
|
|
2673
|
+
* @param {any[]|null|undefined} v
|
|
2674
|
+
* @returns {any[]|null}
|
|
2675
|
+
*/
|
|
2676
|
+
_shownTuple(v: any[] | null | undefined): any[] | null;
|
|
2570
2677
|
_tuple(): any[] | null;
|
|
2571
2678
|
_applyTuple(v: any): void;
|
|
2572
2679
|
_showOperator(operator: any): void;
|
|
@@ -2577,7 +2684,7 @@ declare class CompareFilter extends Input {
|
|
|
2577
2684
|
* them rather than as serialized: a date filter describes what is in its
|
|
2578
2685
|
* control, not the ISO string it sends. Null while every one of those
|
|
2579
2686
|
* operands is empty, so a BETWEEN with one bound answers that bound while
|
|
2580
|
-
* its value is still null.
|
|
2687
|
+
* its value is still null, and before the filter has rendered.
|
|
2581
2688
|
* @returns {FilterCriterion|null}
|
|
2582
2689
|
*/
|
|
2583
2690
|
get criterion(): FilterCriterion | null;
|
|
@@ -2657,7 +2764,9 @@ declare class TextFilter extends CompareFilter {
|
|
|
2657
2764
|
set sensitivities(declared: string[] | null);
|
|
2658
2765
|
/**
|
|
2659
2766
|
* The tuple with the sensitivity after the operator, `[operator,
|
|
2660
|
-
* sensitivity, ...operands]`. Null while any operand the operator uses is
|
|
2767
|
+
* sensitivity, ...operands]`. Null while any operand the operator uses is
|
|
2768
|
+
* empty. Before the render it answers the tuple last written, or the
|
|
2769
|
+
* `value` attribute, as the rendered filter would show it.
|
|
2661
2770
|
* @returns {any[]|null}
|
|
2662
2771
|
*/
|
|
2663
2772
|
get value(): any[] | null;
|
|
@@ -2665,7 +2774,8 @@ declare class TextFilter extends CompareFilter {
|
|
|
2665
2774
|
* Shows a tuple as the compare filter does, reading the sensitivity at
|
|
2666
2775
|
* index 1. A sensitivity the whitelist does not allow leaves the current
|
|
2667
2776
|
* one in place. Null or undefined empties the operands and keeps the
|
|
2668
|
-
* operator and the sensitivity.
|
|
2777
|
+
* operator and the sensitivity. Before the render the tuple is held, as
|
|
2778
|
+
* on the compare filters.
|
|
2669
2779
|
* @param {any[]|null|undefined} v
|
|
2670
2780
|
*/
|
|
2671
2781
|
set value(v: any[] | null | undefined);
|
|
@@ -2719,7 +2829,8 @@ declare class BooleanFilter extends Field {
|
|
|
2719
2829
|
/**
|
|
2720
2830
|
* The operators the menu offers, narrowed to EQ and NEQ: an empty list, or
|
|
2721
2831
|
* one where no name is known, offers both, and a single one pins the
|
|
2722
|
-
* button.
|
|
2832
|
+
* button. When the operator shown leaves the list, the first listed one is
|
|
2833
|
+
* shown. Held before the upgrade and replaced by the `operators` attribute
|
|
2723
2834
|
* at the render, as on the compare filters.
|
|
2724
2835
|
* @returns {string[]|undefined} undefined before the upgrade when nothing was assigned
|
|
2725
2836
|
*/
|
|
@@ -2729,14 +2840,17 @@ declare class BooleanFilter extends Field {
|
|
|
2729
2840
|
/** @returns {string[]} */
|
|
2730
2841
|
_vocabulary(): string[];
|
|
2731
2842
|
/**
|
|
2732
|
-
* `[operator, token]`, the token being 'true' or 'false'; null while the
|
|
2843
|
+
* `[operator, token]`, the token being 'true' or 'false'; null while the
|
|
2844
|
+
* value menu is on any. Before the render it answers the tuple last
|
|
2845
|
+
* written, or the `value` attribute, as the rendered filter would show it.
|
|
2733
2846
|
* @returns {string[]|null}
|
|
2734
2847
|
*/
|
|
2735
2848
|
get value(): string[] | null;
|
|
2736
2849
|
/**
|
|
2737
|
-
* Shows a tuple: its operator,
|
|
2738
|
-
* token, a missing token meaning any. Null or undefined sets the value menu
|
|
2739
|
-
* back to any and keeps the operator.
|
|
2850
|
+
* Shows a tuple: its operator, or the first allowed one where the whitelist
|
|
2851
|
+
* does not allow it, and its token, a missing token meaning any. Null or undefined sets the value menu
|
|
2852
|
+
* back to any and keeps the operator. Before the render the tuple is held,
|
|
2853
|
+
* as on the compare filters.
|
|
2740
2854
|
* @param {any[]|null|undefined} v
|
|
2741
2855
|
*/
|
|
2742
2856
|
set value(v: any[] | null | undefined);
|
|
@@ -2747,7 +2861,7 @@ declare class BooleanFilter extends Field {
|
|
|
2747
2861
|
formResetCallback(): void;
|
|
2748
2862
|
/**
|
|
2749
2863
|
* The operator and the localized word the value menu shows, not the token.
|
|
2750
|
-
* Null while the value menu is on any.
|
|
2864
|
+
* Null while the value menu is on any, and before the filter has rendered.
|
|
2751
2865
|
* @returns {FilterCriterion|null}
|
|
2752
2866
|
*/
|
|
2753
2867
|
get criterion(): FilterCriterion | null;
|
|
@@ -2775,7 +2889,8 @@ declare class InFilter extends Select {
|
|
|
2775
2889
|
* The chosen keys as an array, a single choice included, led by the
|
|
2776
2890
|
* declared `operator` when there is one. Null while nothing is chosen, so
|
|
2777
2891
|
* that a table drops the filter instead of sending an empty set that
|
|
2778
|
-
* matches nothing.
|
|
2892
|
+
* matches nothing. Before the render it answers the keys the select answers
|
|
2893
|
+
* then.
|
|
2779
2894
|
* @returns {any[]|null}
|
|
2780
2895
|
*/
|
|
2781
2896
|
get value(): any[] | null;
|
|
@@ -2783,13 +2898,14 @@ declare class InFilter extends Select {
|
|
|
2783
2898
|
* Selects the keys of an array or a single bare key; a leading element equal
|
|
2784
2899
|
* to the declared `operator` is dropped first, so the filter takes back what
|
|
2785
2900
|
* it answered. A single select takes the first key. Null or undefined clears
|
|
2786
|
-
* the selection.
|
|
2901
|
+
* the selection. Before the render the keys are held, as the select holds
|
|
2902
|
+
* them.
|
|
2787
2903
|
* @param {any} v
|
|
2788
2904
|
*/
|
|
2789
2905
|
set value(v: any);
|
|
2790
2906
|
/**
|
|
2791
2907
|
* The declared operator, or null, and the labels of the chosen entries. Null
|
|
2792
|
-
* while nothing is chosen.
|
|
2908
|
+
* while nothing is chosen, as before the filter has rendered.
|
|
2793
2909
|
* @returns {FilterCriterion|null}
|
|
2794
2910
|
*/
|
|
2795
2911
|
get criterion(): FilterCriterion | null;
|
|
@@ -2931,7 +3047,8 @@ declare class Dialog extends ParsedElement {
|
|
|
2931
3047
|
* the body and `first` true only on the first answered request), so a
|
|
2932
3048
|
* listener can fill the body. A failed request is painted into the body
|
|
2933
3049
|
* and does not reject. On a dialog already open nothing is shown or
|
|
2934
|
-
* requested, and the call waits for the same ending as the calls before it
|
|
3050
|
+
* requested, and the call waits for the same ending as the calls before it;
|
|
3051
|
+
* one the page moved while open, which is no longer modal, opens anew.
|
|
2935
3052
|
* @returns {Promise<DialogOutcome>} resolving on close, or on removal from
|
|
2936
3053
|
* the document with a dismissal
|
|
2937
3054
|
*/
|
|
@@ -3126,9 +3243,11 @@ declare class Drawer extends ParsedElement {
|
|
|
3126
3243
|
* the content section and `first` true only on the first answered request),
|
|
3127
3244
|
* so a listener can fill the content. A failed request is painted into the
|
|
3128
3245
|
* content section and does not reject. On a drawer already open nothing is
|
|
3129
|
-
* shown or requested, except that one sliding out stops and stays open,
|
|
3130
|
-
* the
|
|
3131
|
-
*
|
|
3246
|
+
* shown or requested, except that one sliding out stops and stays open,
|
|
3247
|
+
* forgetting the result it was closing with, and the call waits for the
|
|
3248
|
+
* same ending as the calls before it, which is how a caller learns the
|
|
3249
|
+
* outcome of the opening an `update()` made. One the page moved while open,
|
|
3250
|
+
* which is no longer modal, opens anew.
|
|
3132
3251
|
* @returns {Promise<{ dismissed: boolean, result: string|null, response: any }>} resolving on
|
|
3133
3252
|
* close, or on removal from the document with a dismissal
|
|
3134
3253
|
*/
|
|
@@ -3186,6 +3305,10 @@ declare class Menu extends ParsedElement {
|
|
|
3186
3305
|
#private;
|
|
3187
3306
|
/** @type {string[]} */
|
|
3188
3307
|
static attributes: string[];
|
|
3308
|
+
/** Upgrades the menu, and has a shared one that came back follow the presses on its invoker again. */
|
|
3309
|
+
connectedCallback(): void;
|
|
3310
|
+
/** Stops a shared menu following the presses while it is out of the document. */
|
|
3311
|
+
disconnectedCallback(): void;
|
|
3189
3312
|
/**
|
|
3190
3313
|
* Gives the menu the `menu` role and an empty `popover` attribute unless
|
|
3191
3314
|
* it already has one, and marks the items. With `for`, read here once, it
|
|
@@ -3475,7 +3598,8 @@ declare class Wizard extends ParsedElement {
|
|
|
3475
3598
|
* @returns {Promise<any[] | undefined> | undefined} a promise resolving to
|
|
3476
3599
|
* the answers once they are delivered, or to undefined when nobody
|
|
3477
3600
|
* listened; undefined when the section is already current, and undefined
|
|
3478
|
-
* with a warning when no section carries `ref`
|
|
3601
|
+
* with a warning when no section carries `ref` or the one carrying it has
|
|
3602
|
+
* no step paired with it
|
|
3479
3603
|
* @throws what the entered section's delivery rejected with, as the rejection
|
|
3480
3604
|
* of the returned promise, after its error is painted in the section
|
|
3481
3605
|
*/
|
|
@@ -3488,7 +3612,7 @@ declare class Wizard extends ParsedElement {
|
|
|
3488
3612
|
* @returns {Promise<any[] | undefined> | undefined} a promise resolving to
|
|
3489
3613
|
* the answers, or to undefined when nobody listened or the delivery failed
|
|
3490
3614
|
* (its error painted in the section); undefined, with a warning, when `ref`
|
|
3491
|
-
* names no section
|
|
3615
|
+
* names no section or one with no step paired with it
|
|
3492
3616
|
*/
|
|
3493
3617
|
refresh(ref: string | Element): Promise<any[] | undefined> | undefined;
|
|
3494
3618
|
}
|