@rak200/ui 0.3.0 → 0.4.0
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 +10 -18
- package/dist/field.d.ts +5 -3
- package/dist/field.d.ts.map +1 -1
- package/dist/field.js +5 -3
- package/dist/field.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +330 -33
- package/dist/input.d.ts.map +1 -1
- package/dist/input.js +355 -64
- package/dist/input.js.map +1 -1
- package/dist/select.d.ts +220 -14
- package/dist/select.d.ts.map +1 -1
- package/dist/select.js +381 -26
- package/dist/select.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,21 +29,12 @@ npm install @rak200/ui
|
|
|
29
29
|
import '@rak200/ui';
|
|
30
30
|
</script>
|
|
31
31
|
|
|
32
|
-
<ui-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
<
|
|
36
|
-
</ui-
|
|
37
|
-
|
|
38
|
-
<ui-field>
|
|
39
|
-
<label slot="label">Currency</label>
|
|
40
|
-
<ui-select>
|
|
41
|
-
<select name="currency">
|
|
42
|
-
<option value="brl">Real</option>
|
|
43
|
-
<option value="usd">Dollar</option>
|
|
44
|
-
</select>
|
|
45
|
-
</ui-select>
|
|
46
|
-
</ui-field>
|
|
32
|
+
<ui-input label="Amount" help="In BRL, two decimals." type="number" name="amount"></ui-input>
|
|
33
|
+
|
|
34
|
+
<ui-select label="Currency" name="currency">
|
|
35
|
+
<ui-option value="brl">Real</ui-option>
|
|
36
|
+
<ui-option value="usd">Dollar</ui-option>
|
|
37
|
+
</ui-select>
|
|
47
38
|
|
|
48
39
|
<ui-switch label="Email notifications" name="notify" checked></ui-switch>
|
|
49
40
|
|
|
@@ -86,9 +77,10 @@ schemes rather than one.
|
|
|
86
77
|
|
|
87
78
|
## Status
|
|
88
79
|
|
|
89
|
-
**v0.**
|
|
90
|
-
`<ui-textarea>`, `<ui-checkbox>`, `<ui-switch>`, `<ui-select>`, `<ui-
|
|
91
|
-
`<ui-
|
|
80
|
+
**v0.** Nineteen components — `<ui-button>`, `<ui-card>`, `<ui-field>`, `<ui-dialog>`, `<ui-input>`,
|
|
81
|
+
`<ui-textarea>`, `<ui-checkbox>`, `<ui-switch>`, `<ui-select>`, `<ui-option>`, `<ui-optgroup>`,
|
|
82
|
+
`<ui-radio-group>`, `<ui-radio>`, `<ui-tooltip>`, `<ui-toaster>`, `<ui-toast>`, `<ui-menu>`,
|
|
83
|
+
`<ui-table>` and `<ui-icon>` — the token layer
|
|
92
84
|
under them, and an adopted glyph set, built to the ecosystem's full quality bar rather than
|
|
93
85
|
sketched: type-checked at the strictest available setting, formatted, tested in a real browser and
|
|
94
86
|
**asserted against axe** for WCAG A/AA, 100% coverage and **100% mutation score**, scanned, and
|
package/dist/field.d.ts
CHANGED
|
@@ -6,9 +6,11 @@ import { LitElement, type TemplateResult } from 'lit';
|
|
|
6
6
|
* Written once here rather than per control that needs it, because copies of one wiring are
|
|
7
7
|
* copies of one chance to get it subtly wrong.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* **None of this package's own form controls are among them any more.** `<ui-checkbox>`,
|
|
10
|
+
* `<ui-switch>`, `<ui-input>`, `<ui-textarea>` and `<ui-select>` each render their label, their
|
|
11
|
+
* message and their `aria-invalid` beside the control, in one tree scope, so there is nothing
|
|
12
|
+
* scattered here to point at anything. What is left is a control the host wrote, and
|
|
13
|
+
* {@link UiRadioGroup}, which is named by reference rather than by containment.
|
|
12
14
|
*
|
|
13
15
|
* **Everything is slotted, and that is forced rather than chosen.** An ARIA relationship
|
|
14
16
|
* by IDREF does not cross a shadow boundary: a `<label for>` rendered in this element's
|
package/dist/field.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAMjE
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAMjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,OAAQ,SAAQ,UAAU;;IACnC,gBAAyB,MAAM,0BAuB7B;IAeO,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAK5B,YAAY,IAAI,IAAI;IAIpB,MAAM,IAAI,cAAc;CAmLpC;AAQD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,UAAU,EAAE,OAAO,CAAC;KACvB;CACJ"}
|
package/dist/field.js
CHANGED
|
@@ -9,9 +9,11 @@ let sequence = 0;
|
|
|
9
9
|
* Written once here rather than per control that needs it, because copies of one wiring are
|
|
10
10
|
* copies of one chance to get it subtly wrong.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* **None of this package's own form controls are among them any more.** `<ui-checkbox>`,
|
|
13
|
+
* `<ui-switch>`, `<ui-input>`, `<ui-textarea>` and `<ui-select>` each render their label, their
|
|
14
|
+
* message and their `aria-invalid` beside the control, in one tree scope, so there is nothing
|
|
15
|
+
* scattered here to point at anything. What is left is a control the host wrote, and
|
|
16
|
+
* {@link UiRadioGroup}, which is named by reference rather than by containment.
|
|
15
17
|
*
|
|
16
18
|
* **Everything is slotted, and that is forced rather than chosen.** An ARIA relationship
|
|
17
19
|
* by IDREF does not cross a shadow boundary: a `<label for>` rendered in this element's
|
package/dist/field.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.js","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,8DAA8D;AAC9D,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB
|
|
1
|
+
{"version":3,"file":"field.js","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export { UiIcon, register } from './icon.js';
|
|
|
7
7
|
export { UiInput, UiTextarea } from './input.js';
|
|
8
8
|
export { UiMenu } from './menu.js';
|
|
9
9
|
export { UiRadio, UiRadioGroup, type RadioOrientation } from './radio.js';
|
|
10
|
-
export { UiSelect } from './select.js';
|
|
10
|
+
export { UiOptgroup, UiOption, UiSelect } from './select.js';
|
|
11
11
|
export { UiTable } from './table.js';
|
|
12
12
|
export { UiToast, UiToaster, type ToastVariant } from './toast.js';
|
|
13
13
|
export { UiTooltip } from './tooltip.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACH,MAAM,EACN,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,eAAe,EACf,KAAK,KAAK,EACV,KAAK,YAAY,GACpB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ export { UiIcon, register } from './icon.js';
|
|
|
7
7
|
export { UiInput, UiTextarea } from './input.js';
|
|
8
8
|
export { UiMenu } from './menu.js';
|
|
9
9
|
export { UiRadio, UiRadioGroup } from './radio.js';
|
|
10
|
-
export { UiSelect } from './select.js';
|
|
10
|
+
export { UiOptgroup, UiOption, UiSelect } from './select.js';
|
|
11
11
|
export { UiTable } from './table.js';
|
|
12
12
|
export { UiToast, UiToaster } from './toast.js';
|
|
13
13
|
export { UiTooltip } from './tooltip.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAyB,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAyB,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAqB,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACH,MAAM,EACN,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,eAAe,GAGlB,MAAM,aAAa,CAAC"}
|
package/dist/input.d.ts
CHANGED
|
@@ -1,57 +1,354 @@
|
|
|
1
|
-
import { LitElement, type CSSResult, type TemplateResult } from 'lit';
|
|
1
|
+
import { LitElement, nothing, type CSSResult, type TemplateResult } from 'lit';
|
|
2
2
|
/**
|
|
3
|
-
* A styled native form control.
|
|
3
|
+
* A styled native form control, and the wiring that used to sit around it.
|
|
4
4
|
*
|
|
5
|
-
* The control is
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* **The control is this element's**, rendered into its shadow root together with its
|
|
6
|
+
* label, its help text and its message — so the IDREFs resolve in one tree scope and
|
|
7
|
+
* `<ui-field>` has nothing left to point at. What a host writes is the tag and its
|
|
8
|
+
* attributes.
|
|
9
|
+
*
|
|
10
|
+
* **The element is the form control**, through `ElementInternals`: an `<input>` in a
|
|
11
|
+
* shadow root has no form owner, so the value reaches a submit because this element passes
|
|
12
|
+
* it on. **Constraint validation is not reimplemented** — the inner control still computes
|
|
13
|
+
* its own, `type="email"` and `min` and `pattern` included, and this element hands the
|
|
14
|
+
* whole `ValidityState` over with the message the engine wrote. Measured: a bad address
|
|
15
|
+
* reports `typeMismatch` with the browser's own wording.
|
|
8
16
|
*/
|
|
9
|
-
declare class
|
|
10
|
-
|
|
17
|
+
declare class UiTextField extends LitElement {
|
|
18
|
+
#private;
|
|
19
|
+
static readonly formAssociated = true;
|
|
20
|
+
/**
|
|
21
|
+
* Focus is delegated, so `focus()` and `reportValidity()` reach the control.
|
|
22
|
+
*
|
|
23
|
+
* Neither is optional: the host is not a focusable element, and the second is what the
|
|
24
|
+
* browser calls itself when a form with an invalid control is submitted. Measured, on
|
|
25
|
+
* `<ui-checkbox>` first.
|
|
26
|
+
*/
|
|
27
|
+
static readonly shadowRootOptions: {
|
|
28
|
+
delegatesFocus: boolean;
|
|
29
|
+
clonable?: boolean;
|
|
30
|
+
customElementRegistry?: CustomElementRegistry | null;
|
|
31
|
+
mode: ShadowRootMode;
|
|
32
|
+
serializable?: boolean;
|
|
33
|
+
slotAssignment?: SlotAssignmentMode;
|
|
34
|
+
};
|
|
35
|
+
static readonly properties: {
|
|
36
|
+
label: {
|
|
37
|
+
type: StringConstructor;
|
|
38
|
+
reflect: boolean;
|
|
39
|
+
};
|
|
40
|
+
help: {
|
|
41
|
+
type: StringConstructor;
|
|
42
|
+
reflect: boolean;
|
|
43
|
+
};
|
|
44
|
+
error: {
|
|
45
|
+
type: StringConstructor;
|
|
46
|
+
reflect: boolean;
|
|
47
|
+
};
|
|
48
|
+
name: {
|
|
49
|
+
type: StringConstructor;
|
|
50
|
+
reflect: boolean;
|
|
51
|
+
};
|
|
52
|
+
value: {
|
|
53
|
+
type: StringConstructor;
|
|
54
|
+
};
|
|
55
|
+
placeholder: {
|
|
56
|
+
type: StringConstructor;
|
|
57
|
+
reflect: boolean;
|
|
58
|
+
};
|
|
59
|
+
autocomplete: {
|
|
60
|
+
type: StringConstructor;
|
|
61
|
+
reflect: boolean;
|
|
62
|
+
};
|
|
63
|
+
minlength: {
|
|
64
|
+
type: StringConstructor;
|
|
65
|
+
reflect: boolean;
|
|
66
|
+
};
|
|
67
|
+
maxlength: {
|
|
68
|
+
type: StringConstructor;
|
|
69
|
+
reflect: boolean;
|
|
70
|
+
};
|
|
71
|
+
required: {
|
|
72
|
+
type: BooleanConstructor;
|
|
73
|
+
reflect: boolean;
|
|
74
|
+
};
|
|
75
|
+
disabled: {
|
|
76
|
+
type: BooleanConstructor;
|
|
77
|
+
reflect: boolean;
|
|
78
|
+
};
|
|
79
|
+
readonly: {
|
|
80
|
+
type: BooleanConstructor;
|
|
81
|
+
reflect: boolean;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* The accessible name, and the text above the control.
|
|
86
|
+
*
|
|
87
|
+
* A plain field rather than the `accessor` keyword, for the reason `src/button.ts`
|
|
88
|
+
* gives beside its own — and so for every property below.
|
|
89
|
+
*/
|
|
90
|
+
label: string;
|
|
91
|
+
/** Supporting text under the control, which survives an error rather than yielding. */
|
|
92
|
+
help: string;
|
|
93
|
+
/** The message, which paints the boundary and is announced with the control. */
|
|
94
|
+
error: string;
|
|
95
|
+
/**
|
|
96
|
+
* The name the value is submitted under.
|
|
97
|
+
*
|
|
98
|
+
* **Reflected, and that is a requirement rather than a convenience.** A form names a
|
|
99
|
+
* form-associated custom element's entry from the content attribute, so a host who set
|
|
100
|
+
* only the property would submit nothing at all — silently.
|
|
101
|
+
*/
|
|
102
|
+
name: string;
|
|
103
|
+
/**
|
|
104
|
+
* What the control holds.
|
|
105
|
+
*
|
|
106
|
+
* **Not reflected**, the way a native control's `value` IDL attribute is not: the
|
|
107
|
+
* content attribute is the *default* a reset returns to, and one that followed every
|
|
108
|
+
* keystroke would make the default whatever was last typed.
|
|
109
|
+
*/
|
|
110
|
+
value: string;
|
|
111
|
+
/** The hint inside an empty control, which is never a substitute for the label. */
|
|
112
|
+
placeholder: string;
|
|
113
|
+
/** What the browser may fill this with. Empty means the attribute is not written. */
|
|
114
|
+
autocomplete: string;
|
|
115
|
+
/** The shortest accepted value, as the attribute spells it. */
|
|
116
|
+
minlength: string;
|
|
117
|
+
/** The longest accepted value, likewise. */
|
|
118
|
+
maxlength: string;
|
|
119
|
+
/** Whether a form is invalid while the control is empty. */
|
|
120
|
+
required: boolean;
|
|
121
|
+
/** Whether the control refuses interaction, and submits nothing. */
|
|
122
|
+
disabled: boolean;
|
|
123
|
+
/** Whether the control shows a value it will not let you change. */
|
|
124
|
+
readonly: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* The value and the validity, which move together here or disagree anywhere.
|
|
127
|
+
*
|
|
128
|
+
* **Iterated rather than asserted**, and there is exactly one control to iterate:
|
|
129
|
+
* `render()` puts it there unconditionally. Written as a query and a null check, the
|
|
130
|
+
* check would be a branch no test could reach — which is a coverage hole and an
|
|
131
|
+
* immortal mutant at once, rather than safety. A loop over what was rendered is total.
|
|
132
|
+
*/
|
|
133
|
+
updated(): void;
|
|
134
|
+
/**
|
|
135
|
+
* Mirrors what the person typed back into the property it came from.
|
|
136
|
+
*
|
|
137
|
+
* `input` is composed and leaves the shadow root on its own, retargeted to this
|
|
138
|
+
* element; `change` is not, so the one the control fires stops at the boundary and is
|
|
139
|
+
* re-dispatched. Measured on `<ui-checkbox>`, and the same both times.
|
|
140
|
+
*/
|
|
141
|
+
protected readonly typed: (event: Event) => void;
|
|
142
|
+
protected readonly changed: () => void;
|
|
143
|
+
/**
|
|
144
|
+
* A form reset, which returns to the content attribute — `defaultValue` exactly, and
|
|
145
|
+
* a usable default only because `value` is not reflected onto it.
|
|
146
|
+
*/
|
|
147
|
+
formResetCallback(): void;
|
|
148
|
+
/** A `<fieldset disabled>` above this element, which reaches it and nothing below. */
|
|
149
|
+
formDisabledCallback(disabled: boolean): void;
|
|
150
|
+
/** Restoring after a back-navigation, where the browser hands the value back. */
|
|
151
|
+
formStateRestoreCallback(state: string | null): void;
|
|
152
|
+
/** The form this element participates in, for a host that needs it. */
|
|
153
|
+
get form(): HTMLFormElement | null;
|
|
154
|
+
/** Whether the control currently satisfies its constraints. */
|
|
155
|
+
get validity(): ValidityState;
|
|
156
|
+
/** The message a form would report for it, empty while the control is valid. */
|
|
157
|
+
get validationMessage(): string;
|
|
158
|
+
/**
|
|
159
|
+
* The label, the help and the message, with the control between them.
|
|
160
|
+
*
|
|
161
|
+
* The control is passed in rather than produced by an overridable hook, for the reason
|
|
162
|
+
* `src/checkbox.ts` gives at its own: a hook whose base implementation returns a
|
|
163
|
+
* default cannot be told from one that returns nothing, and the mutation floor is what
|
|
164
|
+
* reports the difference.
|
|
165
|
+
*
|
|
166
|
+
* **The error is described before the help**, and the help is not replaced by it: a
|
|
167
|
+
* screen reader announces descriptions in order, and help text is usually the format
|
|
168
|
+
* requirement — which is the very suggestion a reader needs in order to recover
|
|
169
|
+
* (WCAG 3.3.3). `<ui-field>` decided that and this carries it.
|
|
170
|
+
*/
|
|
171
|
+
protected frame(control: TemplateResult): TemplateResult;
|
|
172
|
+
/** The ids describing the control, in the order a reader needs them. */
|
|
173
|
+
protected described(): string | typeof nothing;
|
|
174
|
+
/** Whether the control announces itself as invalid, which the boundary reads. */
|
|
175
|
+
protected invalid(): string | typeof nothing;
|
|
11
176
|
}
|
|
12
177
|
/**
|
|
13
|
-
* A text input,
|
|
14
|
-
*
|
|
15
|
-
* **The `<input>` is yours.** You write it, you set its attributes, and it stays in the
|
|
16
|
-
* light DOM — so `type`, `required`, `readonly`, `name` and `value` are the platform's
|
|
17
|
-
* business and there is no pass-through layer to fall out of step with them. It reaches a
|
|
18
|
-
* form submit for the same reason: a native control inside a `<form>` participates
|
|
19
|
-
* because it is a native control inside a `<form>`, with no `ElementInternals` and no
|
|
20
|
-
* value mirroring. That was the open question on the issue, and the answer is that the
|
|
21
|
-
* shape the accessibility rule forced happens to be the shape that answers it.
|
|
178
|
+
* A text input, drawn from the token layer rather than replaced.
|
|
22
179
|
*
|
|
23
|
-
*
|
|
24
|
-
* the label
|
|
180
|
+
* **You write the tag, not a control.** RFC 0005 reversed the rule this element was built
|
|
181
|
+
* on: the `<input>`, its `<label>`, its help text and its message are rendered together in
|
|
182
|
+
* one shadow root, so the IDREFs resolve and there is nothing left for `<ui-field>` to
|
|
183
|
+
* wire. The attributes below are the platform's own, and the ones it computes with —
|
|
184
|
+
* `type`, `pattern`, `min`, `max`, `step` — are handed to a real `<input>` that validates
|
|
185
|
+
* them itself.
|
|
25
186
|
*
|
|
26
187
|
* @example
|
|
27
188
|
* ```html
|
|
28
|
-
* <ui-
|
|
29
|
-
* <label slot="label">Amount</label>
|
|
30
|
-
* <ui-input><input type="number" name="amount" /></ui-input>
|
|
31
|
-
* <span slot="help">In BRL, two decimals.</span>
|
|
32
|
-
* </ui-field>
|
|
189
|
+
* <ui-input label="Amount" help="In BRL, two decimals." type="number" name="amount"></ui-input>
|
|
33
190
|
* ```
|
|
34
191
|
*/
|
|
35
|
-
export declare class UiInput extends
|
|
192
|
+
export declare class UiInput extends UiTextField {
|
|
36
193
|
static readonly styles: CSSResult;
|
|
194
|
+
static readonly properties: {
|
|
195
|
+
type: {
|
|
196
|
+
type: StringConstructor;
|
|
197
|
+
reflect: boolean;
|
|
198
|
+
};
|
|
199
|
+
inputmode: {
|
|
200
|
+
type: StringConstructor;
|
|
201
|
+
reflect: boolean;
|
|
202
|
+
};
|
|
203
|
+
pattern: {
|
|
204
|
+
type: StringConstructor;
|
|
205
|
+
reflect: boolean;
|
|
206
|
+
};
|
|
207
|
+
min: {
|
|
208
|
+
type: StringConstructor;
|
|
209
|
+
reflect: boolean;
|
|
210
|
+
};
|
|
211
|
+
max: {
|
|
212
|
+
type: StringConstructor;
|
|
213
|
+
reflect: boolean;
|
|
214
|
+
};
|
|
215
|
+
step: {
|
|
216
|
+
type: StringConstructor;
|
|
217
|
+
reflect: boolean;
|
|
218
|
+
};
|
|
219
|
+
label: {
|
|
220
|
+
type: StringConstructor;
|
|
221
|
+
reflect: boolean;
|
|
222
|
+
};
|
|
223
|
+
help: {
|
|
224
|
+
type: StringConstructor;
|
|
225
|
+
reflect: boolean;
|
|
226
|
+
};
|
|
227
|
+
error: {
|
|
228
|
+
type: StringConstructor;
|
|
229
|
+
reflect: boolean;
|
|
230
|
+
};
|
|
231
|
+
name: {
|
|
232
|
+
type: StringConstructor;
|
|
233
|
+
reflect: boolean;
|
|
234
|
+
};
|
|
235
|
+
value: {
|
|
236
|
+
type: StringConstructor;
|
|
237
|
+
};
|
|
238
|
+
placeholder: {
|
|
239
|
+
type: StringConstructor;
|
|
240
|
+
reflect: boolean;
|
|
241
|
+
};
|
|
242
|
+
autocomplete: {
|
|
243
|
+
type: StringConstructor;
|
|
244
|
+
reflect: boolean;
|
|
245
|
+
};
|
|
246
|
+
minlength: {
|
|
247
|
+
type: StringConstructor;
|
|
248
|
+
reflect: boolean;
|
|
249
|
+
};
|
|
250
|
+
maxlength: {
|
|
251
|
+
type: StringConstructor;
|
|
252
|
+
reflect: boolean;
|
|
253
|
+
};
|
|
254
|
+
required: {
|
|
255
|
+
type: BooleanConstructor;
|
|
256
|
+
reflect: boolean;
|
|
257
|
+
};
|
|
258
|
+
disabled: {
|
|
259
|
+
type: BooleanConstructor;
|
|
260
|
+
reflect: boolean;
|
|
261
|
+
};
|
|
262
|
+
readonly: {
|
|
263
|
+
type: BooleanConstructor;
|
|
264
|
+
reflect: boolean;
|
|
265
|
+
};
|
|
266
|
+
};
|
|
267
|
+
/** Which control the platform draws, and which constraints it then applies. */
|
|
268
|
+
type: string;
|
|
269
|
+
/** Which keyboard a touch device offers, where `type` is not the right lever. */
|
|
270
|
+
inputmode: string;
|
|
271
|
+
/** The expression the value must match. Empty means no attribute is written. */
|
|
272
|
+
pattern: string;
|
|
273
|
+
/** The lowest accepted value, likewise. */
|
|
274
|
+
min: string;
|
|
275
|
+
/** The highest accepted value, likewise. */
|
|
276
|
+
max: string;
|
|
277
|
+
/** The granularity the value must fall on, likewise. */
|
|
278
|
+
step: string;
|
|
279
|
+
render(): TemplateResult;
|
|
37
280
|
}
|
|
38
281
|
/**
|
|
39
|
-
* A multi-line text control,
|
|
282
|
+
* A multi-line text control, drawn from the token layer rather than replaced.
|
|
40
283
|
*
|
|
41
|
-
* Everything {@link UiInput} says applies. What differs is two rules
|
|
42
|
-
* at, and resizing left on the vertical axis
|
|
43
|
-
* fight
|
|
284
|
+
* Everything {@link UiInput} says applies. What differs is two rules — a height to start
|
|
285
|
+
* at, and resizing left on the vertical axis, because a control that cannot grow is one
|
|
286
|
+
* people fight and one that grows sideways breaks the layout around it — and that a
|
|
287
|
+
* `<textarea>` has no `type` and no `pattern` to validate against.
|
|
44
288
|
*
|
|
45
289
|
* @example
|
|
46
290
|
* ```html
|
|
47
|
-
* <ui-
|
|
48
|
-
* <label slot="label">Notes</label>
|
|
49
|
-
* <ui-textarea><textarea name="notes" rows="4"></textarea></ui-textarea>
|
|
50
|
-
* </ui-field>
|
|
291
|
+
* <ui-textarea label="Notes" name="notes" rows="4"></ui-textarea>
|
|
51
292
|
* ```
|
|
52
293
|
*/
|
|
53
|
-
export declare class UiTextarea extends
|
|
294
|
+
export declare class UiTextarea extends UiTextField {
|
|
54
295
|
static readonly styles: CSSResult[];
|
|
296
|
+
static readonly properties: {
|
|
297
|
+
rows: {
|
|
298
|
+
type: StringConstructor;
|
|
299
|
+
reflect: boolean;
|
|
300
|
+
};
|
|
301
|
+
label: {
|
|
302
|
+
type: StringConstructor;
|
|
303
|
+
reflect: boolean;
|
|
304
|
+
};
|
|
305
|
+
help: {
|
|
306
|
+
type: StringConstructor;
|
|
307
|
+
reflect: boolean;
|
|
308
|
+
};
|
|
309
|
+
error: {
|
|
310
|
+
type: StringConstructor;
|
|
311
|
+
reflect: boolean;
|
|
312
|
+
};
|
|
313
|
+
name: {
|
|
314
|
+
type: StringConstructor;
|
|
315
|
+
reflect: boolean;
|
|
316
|
+
};
|
|
317
|
+
value: {
|
|
318
|
+
type: StringConstructor;
|
|
319
|
+
};
|
|
320
|
+
placeholder: {
|
|
321
|
+
type: StringConstructor;
|
|
322
|
+
reflect: boolean;
|
|
323
|
+
};
|
|
324
|
+
autocomplete: {
|
|
325
|
+
type: StringConstructor;
|
|
326
|
+
reflect: boolean;
|
|
327
|
+
};
|
|
328
|
+
minlength: {
|
|
329
|
+
type: StringConstructor;
|
|
330
|
+
reflect: boolean;
|
|
331
|
+
};
|
|
332
|
+
maxlength: {
|
|
333
|
+
type: StringConstructor;
|
|
334
|
+
reflect: boolean;
|
|
335
|
+
};
|
|
336
|
+
required: {
|
|
337
|
+
type: BooleanConstructor;
|
|
338
|
+
reflect: boolean;
|
|
339
|
+
};
|
|
340
|
+
disabled: {
|
|
341
|
+
type: BooleanConstructor;
|
|
342
|
+
reflect: boolean;
|
|
343
|
+
};
|
|
344
|
+
readonly: {
|
|
345
|
+
type: BooleanConstructor;
|
|
346
|
+
reflect: boolean;
|
|
347
|
+
};
|
|
348
|
+
};
|
|
349
|
+
/** How many lines the control starts at. Empty leaves the platform's own default. */
|
|
350
|
+
rows: string;
|
|
351
|
+
render(): TemplateResult;
|
|
55
352
|
}
|
|
56
353
|
declare global {
|
|
57
354
|
interface HTMLElementTagNameMap {
|
package/dist/input.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AA8H1F;;;;;;;;;;;;;;GAcG;AACH,cAAM,WAAY,SAAQ,UAAU;;IAChC,MAAM,CAAC,QAAQ,CAAC,cAAc,QAAQ;IAEtC;;;;;;OAMG;IACH,gBAAyB,iBAAiB;;;;;;;MAGxC;IAEF,gBAAyB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiBjC;IAEF;;;;;OAKG;IACH,KAAK,SAAM;IAEX,uFAAuF;IACvF,IAAI,SAAM;IAEV,gFAAgF;IAChF,KAAK,SAAM;IAEX;;;;;;OAMG;IACH,IAAI,SAAM;IAEV;;;;;;OAMG;IACH,KAAK,SAAM;IAEX,mFAAmF;IACnF,WAAW,SAAM;IAEjB,qFAAqF;IACrF,YAAY,SAAM;IAElB,+DAA+D;IAC/D,SAAS,SAAM;IAEf,4CAA4C;IAC5C,SAAS,SAAM;IAEf,4DAA4D;IAC5D,QAAQ,UAAS;IAEjB,oEAAoE;IACpE,QAAQ,UAAS;IAEjB,oEAAoE;IACpE,QAAQ,UAAS;IAkBjB;;;;;;;OAOG;IACM,OAAO,IAAI,IAAI;IAUxB;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAI,OAAO,KAAK,KAAG,IAAI,CAE7C;IAEF,SAAS,CAAC,QAAQ,CAAC,OAAO,QAAO,IAAI,CAEnC;IAEF;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAIzB,sFAAsF;IACtF,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAI7C,iFAAiF;IACjF,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIpD,uEAAuE;IACvE,IAAI,IAAI,IAAI,eAAe,GAAG,IAAI,CAEjC;IAED,+DAA+D;IAC/D,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,gFAAgF;IAChF,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc;IAmBxD,wEAAwE;IACxE,SAAS,CAAC,SAAS,IAAI,MAAM,GAAG,OAAO,OAAO;IAQ9C,iFAAiF;IACjF,SAAS,CAAC,OAAO,IAAI,MAAM,GAAG,OAAO,OAAO;CAG/C;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,OAAQ,SAAQ,WAAW;IACpC,gBAAyB,MAAM,EAAE,SAAS,CAAS;IAEnD,gBAAyB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAQjC;IAEF,+EAA+E;IAC/E,IAAI,SAAU;IAEd,iFAAiF;IACjF,SAAS,SAAM;IAEf,gFAAgF;IAChF,OAAO,SAAM;IAEb,2CAA2C;IAC3C,GAAG,SAAM;IAET,4CAA4C;IAC5C,GAAG,SAAM;IAET,wDAAwD;IACxD,IAAI,SAAM;IAED,MAAM,IAAI,cAAc;CA2BpC;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,UAAW,SAAQ,WAAW;IACvC,gBAAyB,MAAM,EAAE,SAAS,EAAE,CAQ1C;IAEF,gBAAyB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAGjC;IAEF,qFAAqF;IACrF,IAAI,SAAM;IAED,MAAM,IAAI,cAAc;CAsBpC;AAWD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,UAAU,EAAE,OAAO,CAAC;QACpB,aAAa,EAAE,UAAU,CAAC;KAC7B;CACJ"}
|