@rak200/ui 0.6.3 → 0.6.5
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/button.d.ts +1 -0
- package/dist/button.d.ts.map +1 -1
- package/dist/button.js +38 -1
- package/dist/button.js.map +1 -1
- package/dist/description.d.ts +61 -0
- package/dist/description.d.ts.map +1 -0
- package/dist/description.js +147 -0
- package/dist/description.js.map +1 -0
- package/dist/menu.d.ts.map +1 -1
- package/dist/menu.js +42 -1
- package/dist/menu.js.map +1 -1
- package/dist/tooltip.d.ts.map +1 -1
- package/dist/tooltip.js +105 -10
- package/dist/tooltip.js.map +1 -1
- package/package.json +1 -1
package/dist/button.d.ts
CHANGED
package/dist/button.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../src/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../src/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAIjE,+CAA+C;AAC/C,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,qBAAa,QAAS,SAAQ,UAAU;;IACpC,gBAAyB,MAAM,0BA6E7B;IAEF,gBAAyB,UAAU;;;;;;;;;MAGjC;IAEF;;;;;;;;OAQG;IACH,OAAO,EAAE,aAAa,CAAa;IAEnC,kFAAkF;IAClF,QAAQ,UAAS;IAkBR,MAAM,IAAI,cAAc;CAapC;AAQD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,WAAW,EAAE,QAAQ,CAAC;KACzB;CACJ"}
|
package/dist/button.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { LitElement, css, html } from 'lit';
|
|
2
|
+
import { Description } from './description.js';
|
|
2
3
|
import { reference } from './reference.js';
|
|
3
4
|
/**
|
|
4
5
|
* A button.
|
|
@@ -28,6 +29,21 @@ export class UiButton extends LitElement {
|
|
|
28
29
|
this.variant = 'primary';
|
|
29
30
|
/** Whether the button rejects interaction. Reflected, so CSS can select on it. */
|
|
30
31
|
this.disabled = false;
|
|
32
|
+
/**
|
|
33
|
+
* The sentence a `<ui-tooltip>` handed over, and the node its `<button>` points at.
|
|
34
|
+
*
|
|
35
|
+
* **Built in the field initialiser**, which runs inside the constructor: the tooltip
|
|
36
|
+
* waits on `customElements.whenDefined` before it hands anything over and that
|
|
37
|
+
* resolves after the constructor, so this is in time where a listener added on first
|
|
38
|
+
* render would not be.
|
|
39
|
+
*
|
|
40
|
+
* Private, because a writable `description` is the option RFC 0006 rejected twice
|
|
41
|
+
* over: it makes the host write a sentence the tooltip is already holding, and a
|
|
42
|
+
* property written before an element upgrades shadows its accessor permanently on
|
|
43
|
+
* anything not built on Lit. What is public here is the event, which reports whether
|
|
44
|
+
* anyone took it.
|
|
45
|
+
*/
|
|
46
|
+
this.#description = new Description(this);
|
|
31
47
|
}
|
|
32
48
|
static { this.styles = css `
|
|
33
49
|
:host {
|
|
@@ -111,11 +127,32 @@ export class UiButton extends LitElement {
|
|
|
111
127
|
variant: { type: String, reflect: true },
|
|
112
128
|
disabled: { type: Boolean, reflect: true },
|
|
113
129
|
}; }
|
|
130
|
+
/**
|
|
131
|
+
* The sentence a `<ui-tooltip>` handed over, and the node its `<button>` points at.
|
|
132
|
+
*
|
|
133
|
+
* **Built in the field initialiser**, which runs inside the constructor: the tooltip
|
|
134
|
+
* waits on `customElements.whenDefined` before it hands anything over and that
|
|
135
|
+
* resolves after the constructor, so this is in time where a listener added on first
|
|
136
|
+
* render would not be.
|
|
137
|
+
*
|
|
138
|
+
* Private, because a writable `description` is the option RFC 0006 rejected twice
|
|
139
|
+
* over: it makes the host write a sentence the tooltip is already holding, and a
|
|
140
|
+
* property written before an element upgrades shadows its accessor permanently on
|
|
141
|
+
* anything not built on Lit. What is public here is the event, which reports whether
|
|
142
|
+
* anyone took it.
|
|
143
|
+
*/
|
|
144
|
+
#description;
|
|
114
145
|
render() {
|
|
115
146
|
return html `
|
|
116
|
-
<button
|
|
147
|
+
<button
|
|
148
|
+
class=${this.variant}
|
|
149
|
+
?disabled=${this.disabled}
|
|
150
|
+
aria-describedby=${this.#description.reference()}
|
|
151
|
+
part="button"
|
|
152
|
+
>
|
|
117
153
|
<slot></slot>
|
|
118
154
|
</button>
|
|
155
|
+
${this.#description.carrier()}
|
|
119
156
|
`;
|
|
120
157
|
}
|
|
121
158
|
}
|
package/dist/button.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","sourceRoot":"","sources":["../src/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,QAAS,SAAQ,UAAU;IAAxC;;QAqFI;;;;;;;;WAQG;QACH,YAAO,GAAkB,SAAS,CAAC;QAEnC,kFAAkF;QAClF,aAAQ,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../src/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,QAAS,SAAQ,UAAU;IAAxC;;QAqFI;;;;;;;;WAQG;QACH,YAAO,GAAkB,SAAS,CAAC;QAEnC,kFAAkF;QAClF,aAAQ,GAAG,KAAK,CAAC;QAEjB;;;;;;;;;;;;;WAaG;QACM,iBAAY,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IAelD,CAAC;aA/H4B,WAAM,GAAG,GAAG,CAAA;;;;;;;2BAOd,SAAS,CAAC,WAAW,CAAC;;6BAEpB,SAAS,CAAC,aAAa,CAAC;uBAC9B,SAAS,CAAC,YAAY,CAAC,SAAS,SAAS,CAAC,YAAY,CAAC;;;;;;;;;;;;;;2CAcnC,SAAS,CAAC,qBAAqB,CAAC;kBACzD,SAAS,CAAC,mBAAmB,CAAC;;;;;;;;;;;iCAWf,SAAS,CAAC,kBAAkB,CAAC;;;;;0BAKpC,SAAS,CAAC,mBAAmB,CAAC;qBACnC,SAAS,CAAC,4BAA4B,CAAC;;;;0BAIlC,SAAS,CAAC,oBAAoB,CAAC;qBACpC,SAAS,CAAC,iBAAiB,CAAC;;;;;;;;;0BASvB,SAAS,CAAC,yBAAyB,CAAC;;;;0BAIpC,SAAS,CAAC,kBAAkB,CAAC;;;;;;;;;0BAS7B,SAAS,CAAC,2BAA2B,CAAC;;;;;0BAKtC,SAAS,CAAC,oBAAoB,CAAC;;;KAGpD,AA7E8B,CA6E7B;aAEuB,eAAU,GAAG;QAClC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;QACxC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;KAC7C,AAHkC,CAGjC;IAgBF;;;;;;;;;;;;;OAaG;IACM,YAAY,CAAyB;IAErC,MAAM;QACX,OAAO,IAAI,CAAA;;wBAEK,IAAI,CAAC,OAAO;4BACR,IAAI,CAAC,QAAQ;mCACN,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;;;;;cAKlD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;SAChC,CAAC;IACN,CAAC;;AAGL,kFAAkF;AAClF,wFAAwF;AACxF,yFAAyF;AACzF,4EAA4E;AAC5E,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The sentence a `<ui-tooltip>` hands over, and the node a control points at.
|
|
3
|
+
*
|
|
4
|
+
* **An `aria-describedby` written in the host's tree cannot name anything inside a
|
|
5
|
+
* control's shadow root** — one IDREF, one tree scope — which is the failure #156 measured
|
|
6
|
+
* across most of this package. RFC 0006 answered it by moving the *text* rather than the
|
|
7
|
+
* reference: the tooltip dispatches it at the trigger, and a control that accepts it
|
|
8
|
+
* renders it into its own root where its own `aria-describedby` reaches.
|
|
9
|
+
*
|
|
10
|
+
* **This module exists because `<ui-menu>` is the second element to need it**, which is
|
|
11
|
+
* the same moment and the same reason `src/placement.ts` was extracted: two answers to one
|
|
12
|
+
* problem is one too many. Six classes carry the protocol when the rollout is done, and a
|
|
13
|
+
* copy in each is six chances for one of them to drift into accepting text it never
|
|
14
|
+
* renders.
|
|
15
|
+
*
|
|
16
|
+
* **What it does not own is the rendering.** `<ui-button>` draws its control from a
|
|
17
|
+
* template and `<ui-menu>` builds one imperatively, so each points its own control at
|
|
18
|
+
* {@link Description.reference} and places {@link Description.carrier} where that control
|
|
19
|
+
* can resolve it. What is shared is the part that is identical wherever it goes: the
|
|
20
|
+
* listener, the sentence, and the rule that an empty one is no description at all.
|
|
21
|
+
*
|
|
22
|
+
* Internal — it is not re-exported from `src/index.ts`, because what a consumer writes is
|
|
23
|
+
* the tip, never this.
|
|
24
|
+
*/
|
|
25
|
+
import { nothing, type TemplateResult } from 'lit';
|
|
26
|
+
/** The host's half of the contract: enough of `LitElement` to take the text and redraw. */
|
|
27
|
+
interface Described extends HTMLElement {
|
|
28
|
+
requestUpdate: () => void;
|
|
29
|
+
}
|
|
30
|
+
export declare class Description {
|
|
31
|
+
#private;
|
|
32
|
+
/**
|
|
33
|
+
* Listens from the constructor, which is where the host must build it.
|
|
34
|
+
*
|
|
35
|
+
* The tooltip waits on `customElements.whenDefined` before it hands anything over, and
|
|
36
|
+
* that resolves *after* the constructor has run — so a listener added on connection
|
|
37
|
+
* would still be in time, and one added on first render would not. The constructor is
|
|
38
|
+
* the earliest of the three and the only one with nothing to reason about.
|
|
39
|
+
*/
|
|
40
|
+
constructor(host: Described);
|
|
41
|
+
/**
|
|
42
|
+
* What the control's `aria-describedby` is bound to, or `nothing` when there is no
|
|
43
|
+
* description — an empty attribute is not the same shape as an absent one.
|
|
44
|
+
*/
|
|
45
|
+
reference(): string | typeof nothing;
|
|
46
|
+
/**
|
|
47
|
+
* Points a control built by hand at the carrier, or stops pointing it.
|
|
48
|
+
*
|
|
49
|
+
* The imperative half of {@link Description.reference}, and both exist because the
|
|
50
|
+
* controls do: `<ui-button>` draws its `<button>` from a template and `<ui-menu>`
|
|
51
|
+
* builds one with `document.createElement`, so the same rule has to be expressible
|
|
52
|
+
* twice. It lives here rather than at each call site so *empty means absent* is
|
|
53
|
+
* decided once — an `aria-describedby=""` is a different shape from no attribute, and
|
|
54
|
+
* a control that wrote one would be describing nothing rather than nothing at all.
|
|
55
|
+
*/
|
|
56
|
+
point(control: Element): void;
|
|
57
|
+
/** The node that reference resolves to, rendered into the control's own root. */
|
|
58
|
+
carrier(): TemplateResult | typeof nothing;
|
|
59
|
+
}
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=description.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description.d.ts","sourceRoot":"","sources":["../src/description.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAQ,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,2FAA2F;AAC3F,UAAU,SAAU,SAAQ,WAAW;IACnC,aAAa,EAAE,MAAM,IAAI,CAAC;CAC7B;AAyDD,qBAAa,WAAW;;IAKpB;;;;;;;OAOG;gBACS,IAAI,EAAE,SAAS;IA8B3B;;;OAGG;IACH,SAAS,IAAI,MAAM,GAAG,OAAO,OAAO;IAIpC;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAY7B,iFAAiF;IACjF,OAAO,IAAI,cAAc,GAAG,OAAO,OAAO;CAK7C"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The sentence a `<ui-tooltip>` hands over, and the node a control points at.
|
|
3
|
+
*
|
|
4
|
+
* **An `aria-describedby` written in the host's tree cannot name anything inside a
|
|
5
|
+
* control's shadow root** — one IDREF, one tree scope — which is the failure #156 measured
|
|
6
|
+
* across most of this package. RFC 0006 answered it by moving the *text* rather than the
|
|
7
|
+
* reference: the tooltip dispatches it at the trigger, and a control that accepts it
|
|
8
|
+
* renders it into its own root where its own `aria-describedby` reaches.
|
|
9
|
+
*
|
|
10
|
+
* **This module exists because `<ui-menu>` is the second element to need it**, which is
|
|
11
|
+
* the same moment and the same reason `src/placement.ts` was extracted: two answers to one
|
|
12
|
+
* problem is one too many. Six classes carry the protocol when the rollout is done, and a
|
|
13
|
+
* copy in each is six chances for one of them to drift into accepting text it never
|
|
14
|
+
* renders.
|
|
15
|
+
*
|
|
16
|
+
* **What it does not own is the rendering.** `<ui-button>` draws its control from a
|
|
17
|
+
* template and `<ui-menu>` builds one imperatively, so each points its own control at
|
|
18
|
+
* {@link Description.reference} and places {@link Description.carrier} where that control
|
|
19
|
+
* can resolve it. What is shared is the part that is identical wherever it goes: the
|
|
20
|
+
* listener, the sentence, and the rule that an empty one is no description at all.
|
|
21
|
+
*
|
|
22
|
+
* Internal — it is not re-exported from `src/index.ts`, because what a consumer writes is
|
|
23
|
+
* the tip, never this.
|
|
24
|
+
*/
|
|
25
|
+
import { html, nothing } from 'lit';
|
|
26
|
+
/**
|
|
27
|
+
* The id the carrier takes, fixed per root the way `help` and `error` already are.
|
|
28
|
+
*
|
|
29
|
+
* **The carrier deliberately carries no `part`.** `help` and `error` expose one because a
|
|
30
|
+
* host is meant to style them; this node exists to be read and not seen, and a part on it
|
|
31
|
+
* is an invitation to unclip it — which would put the sentence on screen twice, beside the
|
|
32
|
+
* tip already showing it.
|
|
33
|
+
*/
|
|
34
|
+
const id = 'description';
|
|
35
|
+
/**
|
|
36
|
+
* Keeps the carrier out of the paint without taking it out of the tree, **inline**.
|
|
37
|
+
*
|
|
38
|
+
* The sentence is already on screen — in the tip, which is the whole point of the
|
|
39
|
+
* handoff — so drawing it again would show it twice.
|
|
40
|
+
*
|
|
41
|
+
* It is written on the node rather than adopted from a stylesheet because a stylesheet is
|
|
42
|
+
* a thing each of the six components has to remember, and the day one forgets, the
|
|
43
|
+
* sentence renders **visibly** beside the tip that already carries it. Measured, on the
|
|
44
|
+
* first host that consumed this module without adopting the rule: 363px of text nobody
|
|
45
|
+
* asked to see. There is no token in any of these values and nothing here for a host to
|
|
46
|
+
* retune, so travelling with the node costs the rule nothing.
|
|
47
|
+
*
|
|
48
|
+
* **Four declarations, and the well-known recipe has eight.** The other four survived the
|
|
49
|
+
* mutation floor, which is how they were found to be doing nothing here:
|
|
50
|
+
*
|
|
51
|
+
* - `margin: -1px` keeps a 1px box from disturbing the layout, and `position: absolute`
|
|
52
|
+
* already took it out of the flow.
|
|
53
|
+
* - `padding: 0` resets an inherited padding. A `<span>` has none, and nothing in these
|
|
54
|
+
* components styles this id.
|
|
55
|
+
* - `overflow: hidden` clips the content to the box, which `clip-path` then clips to
|
|
56
|
+
* nothing — so it removes a sliver that is already gone.
|
|
57
|
+
* - `white-space: nowrap` is carried for a claim about how a screen reader reads wrapped
|
|
58
|
+
* text, and no instrument in this toolchain can read an accessibility tree. By the rule
|
|
59
|
+
* `docs/select.md` applies to `appearance: base-select`, that is not adopted here.
|
|
60
|
+
*
|
|
61
|
+
* Each of the four that stay does something no other one does, and the suite says which:
|
|
62
|
+
* out of flow, one column wide, one row tall, and painted nowhere.
|
|
63
|
+
*
|
|
64
|
+
* display:none would be the shorter way and it is the one this package will not take. The
|
|
65
|
+
* accessible description of a hidden element that is DIRECTLY referenced is computed
|
|
66
|
+
* anyway, by specification; whether every engine does it is the same unverifiable claim,
|
|
67
|
+
* and the clip has nothing left to disagree about: in the tree in every engine, and
|
|
68
|
+
* painted in none.
|
|
69
|
+
*
|
|
70
|
+
* No offsets with the absolute, deliberately: an out-of-flow box with none stays at its
|
|
71
|
+
* static position, so it neither travels nor grows the scrollable area.
|
|
72
|
+
*/
|
|
73
|
+
const clipped = [
|
|
74
|
+
'position:absolute',
|
|
75
|
+
'inline-size:1px',
|
|
76
|
+
'block-size:1px',
|
|
77
|
+
'clip-path:inset(50%)',
|
|
78
|
+
].join(';');
|
|
79
|
+
export class Description {
|
|
80
|
+
#sentence = '';
|
|
81
|
+
#host;
|
|
82
|
+
/**
|
|
83
|
+
* Listens from the constructor, which is where the host must build it.
|
|
84
|
+
*
|
|
85
|
+
* The tooltip waits on `customElements.whenDefined` before it hands anything over, and
|
|
86
|
+
* that resolves *after* the constructor has run — so a listener added on connection
|
|
87
|
+
* would still be in time, and one added on first render would not. The constructor is
|
|
88
|
+
* the earliest of the three and the only one with nothing to reason about.
|
|
89
|
+
*/
|
|
90
|
+
constructor(host) {
|
|
91
|
+
this.#host = host;
|
|
92
|
+
host.addEventListener('ui-describe', this.#take);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Takes the sentence, and leaves anything else unclaimed.
|
|
96
|
+
*
|
|
97
|
+
* The payload is tested and the event's class is not, which is narrower than it looks:
|
|
98
|
+
* a plain `Event` carries no `detail` at all, so the type test stops one as surely as
|
|
99
|
+
* an `instanceof` would — and an `instanceof` here was dead weight the mutation floor
|
|
100
|
+
* could not kill, because nothing reached it that this line did not already turn away.
|
|
101
|
+
*
|
|
102
|
+
* `preventDefault()` is the whole of the acknowledgement: the dispatch's return value
|
|
103
|
+
* is what tells the tooltip whether to warn, so a malformed payload has to read as a
|
|
104
|
+
* refusal rather than be accepted and ignored.
|
|
105
|
+
*/
|
|
106
|
+
#take = (event) => {
|
|
107
|
+
const handed = event.detail;
|
|
108
|
+
if (typeof handed !== 'string') {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
event.preventDefault();
|
|
112
|
+
this.#sentence = handed;
|
|
113
|
+
this.#host.requestUpdate();
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* What the control's `aria-describedby` is bound to, or `nothing` when there is no
|
|
117
|
+
* description — an empty attribute is not the same shape as an absent one.
|
|
118
|
+
*/
|
|
119
|
+
reference() {
|
|
120
|
+
return this.#sentence === '' ? nothing : id;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Points a control built by hand at the carrier, or stops pointing it.
|
|
124
|
+
*
|
|
125
|
+
* The imperative half of {@link Description.reference}, and both exist because the
|
|
126
|
+
* controls do: `<ui-button>` draws its `<button>` from a template and `<ui-menu>`
|
|
127
|
+
* builds one with `document.createElement`, so the same rule has to be expressible
|
|
128
|
+
* twice. It lives here rather than at each call site so *empty means absent* is
|
|
129
|
+
* decided once — an `aria-describedby=""` is a different shape from no attribute, and
|
|
130
|
+
* a control that wrote one would be describing nothing rather than nothing at all.
|
|
131
|
+
*/
|
|
132
|
+
point(control) {
|
|
133
|
+
const described = this.reference();
|
|
134
|
+
if (described === nothing) {
|
|
135
|
+
control.removeAttribute('aria-describedby');
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
control.setAttribute('aria-describedby', described);
|
|
139
|
+
}
|
|
140
|
+
/** The node that reference resolves to, rendered into the control's own root. */
|
|
141
|
+
carrier() {
|
|
142
|
+
return this.#sentence === ''
|
|
143
|
+
? nothing
|
|
144
|
+
: html `<span id=${id} style=${clipped}>${this.#sentence}</span>`;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=description.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description.js","sourceRoot":"","sources":["../src/description.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AAOzD;;;;;;;GAOG;AACH,MAAM,EAAE,GAAG,aAAa,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,OAAO,GAAG;IACZ,mBAAmB;IACnB,iBAAiB;IACjB,gBAAgB;IAChB,sBAAsB;CACzB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,OAAO,WAAW;IACpB,SAAS,GAAG,EAAE,CAAC;IAEN,KAAK,CAAY;IAE1B;;;;;;;OAOG;IACH,YAAY,IAAe;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;;;;OAWG;IACM,KAAK,GAAG,CAAC,KAAY,EAAQ,EAAE;QACpC,MAAM,MAAM,GAAa,KAA8B,CAAC,MAAM,CAAC;QAE/D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO;QACX,CAAC;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC,CAAC;IAEF;;;OAGG;IACH,SAAS;QACL,OAAO,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAgB;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEnC,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YAE5C,OAAO;QACX,CAAC;QAED,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,iFAAiF;IACjF,OAAO;QACH,OAAO,IAAI,CAAC,SAAS,KAAK,EAAE;YACxB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,CAAA,YAAY,EAAE,UAAU,OAAO,IAAI,IAAI,CAAC,SAAS,SAAS,CAAC;IACzE,CAAC;CACJ"}
|
package/dist/menu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AA6DjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,MAAO,SAAQ,UAAU;;IAClC,gBAAyB,MAAM,0BAsJ7B;IAEF,gBAAyB,UAAU;;;;;MAEjC;IAEF;;;;;;;;;;OAUG;IACH,IAAI,UAAS;;IAoFJ,oBAAoB,IAAI,IAAI;IAmB5B,OAAO,IAAI,IAAI;IA6Bf,MAAM,IAAI,cAAc;CA2NpC;AAQD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,SAAS,EAAE,MAAM,CAAC;KACrB;CACJ"}
|
package/dist/menu.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LitElement, css, html } from 'lit';
|
|
2
2
|
import { place } from './placement.js';
|
|
3
|
+
import { Description } from './description.js';
|
|
3
4
|
import { reference } from './reference.js';
|
|
4
5
|
/**
|
|
5
6
|
* The panel's id, and it needs no counter behind it.
|
|
@@ -254,6 +255,19 @@ export class UiMenu extends LitElement {
|
|
|
254
255
|
}; }
|
|
255
256
|
/** The button this component owns, so the relationship below cannot be miswired. */
|
|
256
257
|
#trigger;
|
|
258
|
+
/**
|
|
259
|
+
* The sentence a `<ui-tooltip>` hands over, and the node the trigger points at.
|
|
260
|
+
*
|
|
261
|
+
* This element is the hardest place the protocol goes and it is taken second on
|
|
262
|
+
* purpose: it renders its own trigger, drives a popover, already holds an
|
|
263
|
+
* `aria-controls` reference and hand-writes the focus return across a shadow
|
|
264
|
+
* boundary. A protocol that broke here first would not say whether the protocol or
|
|
265
|
+
* the menu was at fault — so `<ui-button>`, which has none of that, proved it. RFC 0006
|
|
266
|
+
*
|
|
267
|
+
* The trigger is built with `document.createElement`, so the reference is written in
|
|
268
|
+
* {@link UiMenu.updated} beside `aria-expanded` rather than bound in the template.
|
|
269
|
+
*/
|
|
270
|
+
#description;
|
|
257
271
|
/** The menu itself, in the same tree scope as the trigger that names it. */
|
|
258
272
|
#panel;
|
|
259
273
|
/** What a pending typeahead has collected, and the clock that forgets it. */
|
|
@@ -290,6 +304,19 @@ export class UiMenu extends LitElement {
|
|
|
290
304
|
this.open = false;
|
|
291
305
|
/** The button this component owns, so the relationship below cannot be miswired. */
|
|
292
306
|
this.#trigger = document.createElement('button');
|
|
307
|
+
/**
|
|
308
|
+
* The sentence a `<ui-tooltip>` hands over, and the node the trigger points at.
|
|
309
|
+
*
|
|
310
|
+
* This element is the hardest place the protocol goes and it is taken second on
|
|
311
|
+
* purpose: it renders its own trigger, drives a popover, already holds an
|
|
312
|
+
* `aria-controls` reference and hand-writes the focus return across a shadow
|
|
313
|
+
* boundary. A protocol that broke here first would not say whether the protocol or
|
|
314
|
+
* the menu was at fault — so `<ui-button>`, which has none of that, proved it. RFC 0006
|
|
315
|
+
*
|
|
316
|
+
* The trigger is built with `document.createElement`, so the reference is written in
|
|
317
|
+
* {@link UiMenu.updated} beside `aria-expanded` rather than bound in the template.
|
|
318
|
+
*/
|
|
319
|
+
this.#description = new Description(this);
|
|
293
320
|
/** The menu itself, in the same tree scope as the trigger that names it. */
|
|
294
321
|
this.#panel = document.createElement('div');
|
|
295
322
|
/** What a pending typeahead has collected, and the clock that forgets it. */
|
|
@@ -439,10 +466,21 @@ export class UiMenu extends LitElement {
|
|
|
439
466
|
// framework unmounted would otherwise keep re-placing an element that is no longer
|
|
440
467
|
// in a document.
|
|
441
468
|
this.#watching.abort();
|
|
469
|
+
// Stryker disable next-line CallExpression: this reaches exactly two things in Lit
|
|
470
|
+
// and this element has neither — `__controllers` is empty, because nothing here
|
|
471
|
+
// registers a reactive controller, and `__childPart.setConnected(false)` speaks
|
|
472
|
+
// only to async directives, which this template does not use. `Description` is a
|
|
473
|
+
// plain object rather than a `ReactiveController` for precisely that reason: it
|
|
474
|
+
// needs `requestUpdate` and no lifecycle hook, so it adds nothing here to
|
|
475
|
+
// disconnect. The same annotation is in `src/toast.ts` with the same reading, and
|
|
476
|
+
// the call stays for the same reason: Lit documents it as the extension point it
|
|
477
|
+
// reserves for later additions, so the day this element grows a controller the
|
|
478
|
+
// mutant stops being equivalent and nothing else would say so.
|
|
442
479
|
super.disconnectedCallback();
|
|
443
480
|
}
|
|
444
481
|
updated() {
|
|
445
482
|
this.#trigger.setAttribute('aria-expanded', String(this.open));
|
|
483
|
+
this.#description.point(this.#trigger);
|
|
446
484
|
// Compared against the platform's own state rather than against Lit's changed
|
|
447
485
|
// properties, and it has to be: on the first update Lit reports every initialised
|
|
448
486
|
// property as changed, so a menu that has never been open would run the closing
|
|
@@ -468,7 +506,10 @@ export class UiMenu extends LitElement {
|
|
|
468
506
|
}
|
|
469
507
|
}
|
|
470
508
|
render() {
|
|
471
|
-
|
|
509
|
+
// The carrier sits beside the trigger rather than inside the panel: the panel is a
|
|
510
|
+
// popover and the reference has to resolve from where the reader's focus lands,
|
|
511
|
+
// which is the trigger's own tree scope and not the layer above it.
|
|
512
|
+
return html `${this.#trigger}${this.#panel}${this.#description.carrier()}`;
|
|
472
513
|
}
|
|
473
514
|
/** The items, which are the host's own controls rather than anything rendered here. */
|
|
474
515
|
#items() {
|
package/dist/menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"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"}
|
package/dist/tooltip.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../src/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../src/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AA4CjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,qBAAa,SAAU,SAAQ,UAAU;;IACrC,gBAAyB,MAAM,0BAkD7B;IAyFO,iBAAiB,IAAI,IAAI;IA0BzB,oBAAoB,IAAI,IAAI;IAe5B,MAAM,IAAI,cAAc;CA2WpC;AAQD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,YAAY,EAAE,SAAS,CAAC;KAC3B;CACJ"}
|
package/dist/tooltip.js
CHANGED
|
@@ -12,14 +12,6 @@ const side = 'data-side';
|
|
|
12
12
|
* inside the boundary, not how the element was made able to take it.
|
|
13
13
|
*/
|
|
14
14
|
const focusable = 'a[href], button, input, select, textarea, [tabindex]';
|
|
15
|
-
/**
|
|
16
|
-
* The ids already describing a trigger, as a list rather than the attribute's string.
|
|
17
|
-
*
|
|
18
|
-
* Both halves of the wiring read it — one to add an id, the other to take the same one
|
|
19
|
-
* back out — and they have to agree about what the string means. The empty filter is what
|
|
20
|
-
* makes an absent attribute an empty list: `''.split(' ')` is `['']`, and a list with one
|
|
21
|
-
* empty entry joins back with a leading space.
|
|
22
|
-
*/
|
|
23
15
|
function describing(trigger) {
|
|
24
16
|
return (trigger.getAttribute('aria-describedby') ?? '').split(' ').filter((id) => id !== '');
|
|
25
17
|
}
|
|
@@ -227,6 +219,10 @@ export class UiTooltip extends LitElement {
|
|
|
227
219
|
this.addEventListener('pointerleave', this.#onLeave, watched);
|
|
228
220
|
this.addEventListener('focusin', this.#onFocus, watched);
|
|
229
221
|
this.addEventListener('focusout', this.#onLeave, watched);
|
|
222
|
+
// A tooltip a framework moved in the tree comes back wired. `disconnectedCallback`
|
|
223
|
+
// withdraws the description, and nothing fires a `slotchange` on reconnection to
|
|
224
|
+
// put it back — the same argument the fresh `AbortController` above is here for.
|
|
225
|
+
this.#associate();
|
|
230
226
|
}
|
|
231
227
|
disconnectedCallback() {
|
|
232
228
|
// Removed while shown, the tip takes the window listeners with it. A tooltip that
|
|
@@ -234,6 +230,10 @@ export class UiTooltip extends LitElement {
|
|
|
234
230
|
// is no longer in a document.
|
|
235
231
|
this.#hide();
|
|
236
232
|
this.#listeners.abort();
|
|
233
|
+
// The trigger is this element's own child, so it usually leaves with it and has
|
|
234
|
+
// nobody left to describe. What this is for is the host that moves the trigger out
|
|
235
|
+
// first, and the framework that unmounts this element alone.
|
|
236
|
+
this.#unwire();
|
|
237
237
|
super.disconnectedCallback();
|
|
238
238
|
}
|
|
239
239
|
render() {
|
|
@@ -299,9 +299,93 @@ export class UiTooltip extends LitElement {
|
|
|
299
299
|
if (!described.includes(tip.id)) {
|
|
300
300
|
trigger.setAttribute('aria-describedby', [...described, tip.id].join(' '));
|
|
301
301
|
}
|
|
302
|
-
|
|
303
|
-
|
|
302
|
+
// The sentence crosses to the trigger as a **copy**, so unlike the IDREF beside it
|
|
303
|
+
// it goes stale the moment the host touches the original — and `slotchange` fires
|
|
304
|
+
// when the tip element is *replaced* and for **neither** in-place edit, measured:
|
|
305
|
+
// not text rewritten through `textContent`, not a node appended to it. The three
|
|
306
|
+
// options are one decision: an edit can land on a descendant as readily as on the
|
|
307
|
+
// tip itself.
|
|
308
|
+
//
|
|
309
|
+
// It rides in the wiring rather than beside it so there is one thing to be absent
|
|
310
|
+
// rather than two — and the pair is what it speaks for, so a disconnected observer
|
|
311
|
+
// and a cleared pair cannot come apart. One per tooltip, over this element's own
|
|
312
|
+
// slotted child: the bridge this proposal rejected owed one observer **per
|
|
313
|
+
// control**, over a node each control had to resolve an id in first. RFC 0006
|
|
314
|
+
const observer = new MutationObserver(() => {
|
|
315
|
+
this.#hand(wiring);
|
|
316
|
+
});
|
|
317
|
+
const wiring = { trigger, tip, observer };
|
|
318
|
+
observer.observe(tip, { characterData: true, childList: true, subtree: true });
|
|
319
|
+
this.#wired = wiring;
|
|
320
|
+
this.#offer(wiring);
|
|
304
321
|
};
|
|
322
|
+
/**
|
|
323
|
+
* Hands the sentence over, once the trigger is in a state where refusal means refusal.
|
|
324
|
+
*
|
|
325
|
+
* A dispatch at an element whose definition has not arrived is heard by nobody and
|
|
326
|
+
* comes back **uncancelled** — which is exactly what a trigger that accepts no text
|
|
327
|
+
* returns. The two are indistinguishable, so warning on that answer would warn at an
|
|
328
|
+
* element that would have accepted. Measured, and measured again for the recovery:
|
|
329
|
+
* the upgrade fires no `slotchange`, no hook and no event at all, so this promise is
|
|
330
|
+
* the only signal there is and waiting on it is a requirement rather than a
|
|
331
|
+
* refinement. RFC 0006
|
|
332
|
+
*
|
|
333
|
+
* **The hyphen test is load-bearing rather than a shortcut**: `whenDefined` throws on
|
|
334
|
+
* a name that could never be a custom element, so `<button>` has to be answered
|
|
335
|
+
* before the registry is asked about it.
|
|
336
|
+
*/
|
|
337
|
+
#offer(wiring) {
|
|
338
|
+
const name = wiring.trigger.localName;
|
|
339
|
+
if (name.includes('-') && customElements.get(name) === undefined) {
|
|
340
|
+
void customElements.whenDefined(name).then(() => {
|
|
341
|
+
// The wiring can have moved on while the definition was travelling, and
|
|
342
|
+
// this element only ever speaks for the one it is holding now.
|
|
343
|
+
if (this.#wired === wiring) {
|
|
344
|
+
this.#hand(wiring);
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
this.#hand(wiring);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* The dispatch itself, carrying whatever the tip says right now.
|
|
353
|
+
*
|
|
354
|
+
* **The most recent dispatch wins and a trigger never accumulates**: a tooltip has one
|
|
355
|
+
* tip, so this is a value being written rather than an item being added — and
|
|
356
|
+
* accumulation would owe a withdrawal per sentence, which this element has nothing to
|
|
357
|
+
* identify one by.
|
|
358
|
+
*
|
|
359
|
+
* **The advertisement is the return value.** A control that takes the text calls
|
|
360
|
+
* `preventDefault()`, so `dispatchEvent` comes back `false` exactly when someone
|
|
361
|
+
* accepted — which is why the warning below needs no roster of elements, and this
|
|
362
|
+
* proposal already recorded that a roster ages exactly like the sentence it replaced.
|
|
363
|
+
*/
|
|
364
|
+
#hand(wiring) {
|
|
365
|
+
// The markup around the sentence is not the sentence: a tip written across lines
|
|
366
|
+
// carries its indentation into `textContent`, and what the trigger renders is
|
|
367
|
+
// announced rather than laid out.
|
|
368
|
+
if (!this.#say(wiring.trigger, wiring.tip.textContent.trim())) {
|
|
369
|
+
this.#complain(wiring.trigger);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* The dispatch, which is the entire protocol.
|
|
374
|
+
*
|
|
375
|
+
* **One site for both directions**, the sentence and its withdrawal, and that is not
|
|
376
|
+
* only tidiness: the flags are the contract, and written twice only one copy would be
|
|
377
|
+
* read back. `cancelable` is what lets a control answer at all — without it
|
|
378
|
+
* `preventDefault()` does nothing and every trigger reads as refusing — so it belongs
|
|
379
|
+
* where the answer is consumed rather than beside a call that ignores it.
|
|
380
|
+
*
|
|
381
|
+
* @returns whether a control took it, which is the whole of the advertisement: the
|
|
382
|
+
* acknowledgement is `preventDefault()`, so no roster of elements is needed — and
|
|
383
|
+
* this proposal already recorded that a roster ages exactly like the sentence it
|
|
384
|
+
* replaced. RFC 0006
|
|
385
|
+
*/
|
|
386
|
+
#say(trigger, sentence) {
|
|
387
|
+
return !trigger.dispatchEvent(new CustomEvent('ui-describe', { detail: sentence, cancelable: true }));
|
|
388
|
+
}
|
|
305
389
|
/**
|
|
306
390
|
* Takes back the one id this element wrote, and leaves every other one alone.
|
|
307
391
|
*
|
|
@@ -316,6 +400,17 @@ export class UiTooltip extends LitElement {
|
|
|
316
400
|
return;
|
|
317
401
|
}
|
|
318
402
|
this.#wired = undefined;
|
|
403
|
+
wired.observer.disconnect();
|
|
404
|
+
// The withdrawal, on the same event rather than a second name: `detail` is a
|
|
405
|
+
// string whose empty value means *absent*, which is the shape `help` and `error`
|
|
406
|
+
// already have everywhere else in this package. Without it a control keeps
|
|
407
|
+
// pointing at text describing a tip the reader can no longer summon, which is
|
|
408
|
+
// worse than never having had it because it reads as current.
|
|
409
|
+
//
|
|
410
|
+
// The answer is not read here, and that is deliberate: a trigger that refuses to
|
|
411
|
+
// let go is not a trigger the description failed to reach, so {@link
|
|
412
|
+
// UiTooltip.#complain} has nothing to say about it. RFC 0006
|
|
413
|
+
this.#say(wired.trigger, '');
|
|
319
414
|
const remaining = describing(wired.trigger).filter((id) => id !== wired.tip.id);
|
|
320
415
|
if (remaining.length === 0) {
|
|
321
416
|
wired.trigger.removeAttribute('aria-describedby');
|
package/dist/tooltip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../src/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,+DAA+D;AAC/D,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB,iFAAiF;AACjF,MAAM,IAAI,GAAG,WAAW,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,SAAS,GAAG,sDAAsD,CAAC;
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../src/tooltip.ts"],"names":[],"mappings":"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"}
|