vintage-frames 0.2.1 → 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/custom-elements.json +204 -7
- package/dist/components/vf-button.js +25 -25
- package/dist/components/vf-checkbox.js +15 -15
- package/dist/components/vf-desktop.d.ts +51 -3
- package/dist/components/vf-desktop.js +57 -48
- package/dist/components/vf-icon.d.ts +19 -4
- package/dist/components/vf-icon.js +65 -55
- package/dist/components/vf-list-item.js +16 -16
- package/dist/components/vf-list.js +26 -26
- package/dist/components/vf-menu-bar.d.ts +8 -0
- package/dist/components/vf-menu-bar.js +5 -2
- package/dist/components/vf-menu-item.d.ts +12 -6
- package/dist/components/vf-menu-item.js +47 -29
- package/dist/components/vf-menu.d.ts +14 -1
- package/dist/components/vf-menu.js +85 -65
- package/dist/components/vf-number-field.js +17 -17
- package/dist/components/vf-radio-group.js +13 -13
- package/dist/components/vf-radio.js +16 -16
- package/dist/components/vf-select.js +27 -27
- package/dist/components/vf-slider.js +24 -24
- package/dist/components/vf-window.d.ts +26 -0
- package/dist/components/vf-window.js +105 -56
- package/dist/index.js +29 -29
- package/dist/modal-dialog.js +21 -21
- package/dist/text-control.js +11 -11
- package/dist/toggle-control.js +5 -5
- package/docs/SPEC.md +16 -11
- package/editor/vscode.html-custom-data.json +20 -5
- package/editor/web-types.json +67 -10
- package/package.json +4 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import n from "../
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { emit as e } from "../events.js";
|
|
2
|
+
import { vfElement as t } from "../define.js";
|
|
3
|
+
import { ScaleController as n } from "../scale.js";
|
|
4
|
+
import r from "../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorate.js";
|
|
5
|
+
import { VfPositioned as i } from "../position.js";
|
|
6
|
+
import { vfBase as a } from "../styles/recipes/host.js";
|
|
7
|
+
import { vfFocusRing as o } from "../styles/recipes/focus.js";
|
|
8
8
|
import { LitElement as s, css as c, html as l } from "lit";
|
|
9
9
|
import { property as u } from "lit/decorators.js";
|
|
10
10
|
//#region src/components/vf-list-item.ts
|
|
11
|
-
var d = class extends
|
|
11
|
+
var d = class extends i(s) {
|
|
12
12
|
static {
|
|
13
|
-
this.styles = [
|
|
13
|
+
this.styles = [a, c`
|
|
14
14
|
:host {
|
|
15
15
|
display: flex;
|
|
16
16
|
align-items: center;
|
|
@@ -48,7 +48,7 @@ var d = class extends r(s) {
|
|
|
48
48
|
across selected rows while Space still acts on it. */
|
|
49
49
|
:host(:focus) {
|
|
50
50
|
--vf-focus-offset: -1px;
|
|
51
|
-
${
|
|
51
|
+
${o}
|
|
52
52
|
}
|
|
53
53
|
:host([selected]) {
|
|
54
54
|
background: var(--vf-highlight, #000);
|
|
@@ -75,25 +75,25 @@ var d = class extends r(s) {
|
|
|
75
75
|
}
|
|
76
76
|
#e;
|
|
77
77
|
constructor() {
|
|
78
|
-
super(), this.scale = new
|
|
78
|
+
super(), this.scale = new n(this), this.value = "", this.selected = !1, this.disabled = !1, this.listDisabled = !1, this.#e = this.attachInternals(), this.#e.role = "option";
|
|
79
79
|
}
|
|
80
80
|
connectedCallback() {
|
|
81
81
|
super.connectedCallback(), this.hasAttribute("tabindex") || (this.tabIndex = -1);
|
|
82
82
|
}
|
|
83
|
-
updated(
|
|
84
|
-
|
|
83
|
+
updated(t) {
|
|
84
|
+
t.has("selected") && (this.#e.ariaSelected = this.selected ? "true" : "false"), (t.has("disabled") || t.has("listDisabled")) && (this.#e.ariaDisabled = this.disabled || this.listDisabled ? "true" : null), t.has("disabled") && t.get("disabled") !== void 0 && e(this, "vf-list-item-disabled-change", { item: this }, { composed: !1 });
|
|
85
85
|
}
|
|
86
86
|
render() {
|
|
87
87
|
return l`<slot name="icon"></slot
|
|
88
88
|
><span class="text" part="text"><slot></slot></span>`;
|
|
89
89
|
}
|
|
90
90
|
};
|
|
91
|
-
|
|
91
|
+
r([u()], d.prototype, "value", void 0), r([u({
|
|
92
92
|
type: Boolean,
|
|
93
93
|
reflect: !0
|
|
94
|
-
})], d.prototype, "selected", void 0),
|
|
94
|
+
})], d.prototype, "selected", void 0), r([u({
|
|
95
95
|
type: Boolean,
|
|
96
96
|
reflect: !0
|
|
97
|
-
})], d.prototype, "disabled", void 0),
|
|
97
|
+
})], d.prototype, "disabled", void 0), r([u({ attribute: !1 })], d.prototype, "listDisabled", void 0), d = r([t("vf-list-item")], d);
|
|
98
98
|
//#endregion
|
|
99
99
|
export { d as VfListItem };
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import n from "../
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
1
|
+
import { emit as e } from "../events.js";
|
|
2
|
+
import { vfElement as t } from "../define.js";
|
|
3
|
+
import { ScaleController as n } from "../scale.js";
|
|
4
|
+
import r from "../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorate.js";
|
|
5
|
+
import { VfPositioned as i } from "../position.js";
|
|
6
|
+
import { vfBase as a } from "../styles/recipes/host.js";
|
|
7
|
+
import { vfFocusRing as o } from "../styles/recipes/focus.js";
|
|
8
|
+
import { vfScrollRail as s } from "../styles/recipes/scroll-rail.js";
|
|
9
|
+
import { GridSnapController as c } from "../grid-snap.js";
|
|
10
10
|
import { ScrollStateController as l } from "../scroll-state.js";
|
|
11
11
|
import { ScrollRailController as u, renderScrollRail as d } from "../scroll-rail.js";
|
|
12
12
|
import { TypeAheadBuffer as f } from "../type-ahead.js";
|
|
13
13
|
import { LitElement as p, css as m, html as h, nothing as g } from "lit";
|
|
14
14
|
import { property as _, query as v, queryAssignedElements as y, state as b } from "lit/decorators.js";
|
|
15
15
|
//#region src/components/vf-list.ts
|
|
16
|
-
var x = (e, t) => e.length === t.length && e.every((e, n) => e === t[n]), S = class extends
|
|
16
|
+
var x = (e, t) => e.length === t.length && e.every((e, n) => e === t[n]), S = class extends i(p) {
|
|
17
17
|
static {
|
|
18
18
|
this.styles = [
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
a,
|
|
20
|
+
s,
|
|
21
21
|
m`
|
|
22
22
|
:host {
|
|
23
23
|
display: block;
|
|
@@ -66,7 +66,7 @@ var x = (e, t) => e.length === t.length && e.every((e, n) => e === t[n]), S = cl
|
|
|
66
66
|
render()); the ring keeps that stop visible, inset to stay in-box. */
|
|
67
67
|
.list:focus-visible {
|
|
68
68
|
--vf-focus-offset: -2px;
|
|
69
|
-
${
|
|
69
|
+
${o}
|
|
70
70
|
}
|
|
71
71
|
`
|
|
72
72
|
];
|
|
@@ -77,7 +77,7 @@ var x = (e, t) => e.length === t.length && e.every((e, n) => e === t[n]), S = cl
|
|
|
77
77
|
#r;
|
|
78
78
|
#i;
|
|
79
79
|
constructor() {
|
|
80
|
-
super(), this.scale = new
|
|
80
|
+
super(), this.scale = new n(this), this.gridSnap = new c(this), this.scrollState = new l(this, () => this.viewport, () => this.content, (e) => {
|
|
81
81
|
this._scrollable = e.x || e.y;
|
|
82
82
|
}), this.rail = new u(this, {
|
|
83
83
|
getScroll: () => this.viewport,
|
|
@@ -192,15 +192,15 @@ var x = (e, t) => e.length === t.length && e.every((e, n) => e === t[n]), S = cl
|
|
|
192
192
|
this.#s(e, !1);
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
|
-
#s(
|
|
196
|
-
let
|
|
197
|
-
for (let e of
|
|
198
|
-
let
|
|
199
|
-
this.#r = [...
|
|
200
|
-
let
|
|
201
|
-
this.value !==
|
|
195
|
+
#s(t, n) {
|
|
196
|
+
let r = this._items, i = this.multiple ? t : t.slice(0, 1), a = r.filter((e) => e.selected).map((e) => e.value);
|
|
197
|
+
for (let e of r) e.selected = i.includes(e.value) && !e.disabled;
|
|
198
|
+
let o = r.filter((e) => e.selected).map((e) => e.value);
|
|
199
|
+
this.#r = [...o];
|
|
200
|
+
let s = o[0] ?? "";
|
|
201
|
+
this.value !== s && (this.value = s), x(this.values, o) || (this.values = o), this.#c(), n && !x(a, o) && e(this, "vf-change", {
|
|
202
202
|
value: this.value,
|
|
203
|
-
values: [...
|
|
203
|
+
values: [...o]
|
|
204
204
|
});
|
|
205
205
|
}
|
|
206
206
|
#c() {
|
|
@@ -242,15 +242,15 @@ var x = (e, t) => e.length === t.length && e.every((e, n) => e === t[n]), S = cl
|
|
|
242
242
|
!t || t.disabled || (t.focus(), t.scrollIntoView({ block: "nearest" }));
|
|
243
243
|
}
|
|
244
244
|
};
|
|
245
|
-
|
|
245
|
+
r([v(".list")], S.prototype, "viewport", void 0), r([v(".list-content")], S.prototype, "content", void 0), r([b()], S.prototype, "_scrollable", void 0), r([_({
|
|
246
246
|
type: Boolean,
|
|
247
247
|
reflect: !0
|
|
248
|
-
})], S.prototype, "multiple", void 0),
|
|
248
|
+
})], S.prototype, "multiple", void 0), r([_()], S.prototype, "value", void 0), r([_({ attribute: !1 })], S.prototype, "values", void 0), r([_({
|
|
249
249
|
type: Boolean,
|
|
250
250
|
reflect: !0
|
|
251
|
-
})], S.prototype, "disabled", void 0),
|
|
251
|
+
})], S.prototype, "disabled", void 0), r([_()], S.prototype, "label", void 0), r([y({
|
|
252
252
|
selector: "vf-list-item",
|
|
253
253
|
flatten: !0
|
|
254
|
-
})], S.prototype, "_items", void 0), S =
|
|
254
|
+
})], S.prototype, "_items", void 0), S = r([t("vf-list")], S);
|
|
255
255
|
//#endregion
|
|
256
256
|
export { S as VfList };
|
|
@@ -43,6 +43,14 @@ export declare class VfMenuBar extends VfMenuBar_base {
|
|
|
43
43
|
* mask was.
|
|
44
44
|
*/
|
|
45
45
|
rounded: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Makes every slotted menu's item `shortcut`s live key equivalents — one
|
|
48
|
+
* declaration for the whole bar, the way MenuKey() answered for every menu
|
|
49
|
+
* at once. See `vf-menu.shortcuts` (the per-menu grant) and
|
|
50
|
+
* `vf-menu-item.shortcut` for the claim contract. Off by default: key
|
|
51
|
+
* equivalents are page-global, and only *the* menu bar should own them.
|
|
52
|
+
*/
|
|
53
|
+
shortcuts: boolean;
|
|
46
54
|
private _menus;
|
|
47
55
|
connectedCallback(): void;
|
|
48
56
|
disconnectedCallback(): void;
|
|
@@ -13,7 +13,7 @@ import { property as h, queryAssignedElements as g } from "lit/decorators.js";
|
|
|
13
13
|
//#region src/components/vf-menu-bar.ts
|
|
14
14
|
var _ = class extends r(d) {
|
|
15
15
|
constructor(...e) {
|
|
16
|
-
super(...e), this.scale = new t(this), this.gridSnap = new a(this), this.label = "", this.rounded = !1, this.#e = null, this.#t = this.attachInternals(), this.#n = new l(), this.#r = null, this.#i = new o(this, () => [[
|
|
16
|
+
super(...e), this.scale = new t(this), this.gridSnap = new a(this), this.label = "", this.rounded = !1, this.shortcuts = !1, this.#e = null, this.#t = this.attachInternals(), this.#n = new l(), this.#r = null, this.#i = new o(this, () => [[
|
|
17
17
|
document,
|
|
18
18
|
"pointerdown",
|
|
19
19
|
this.#h,
|
|
@@ -228,7 +228,10 @@ var _ = class extends r(d) {
|
|
|
228
228
|
n([h()], _.prototype, "label", void 0), n([h({
|
|
229
229
|
type: Boolean,
|
|
230
230
|
reflect: !0
|
|
231
|
-
})], _.prototype, "rounded", void 0), n([
|
|
231
|
+
})], _.prototype, "rounded", void 0), n([h({
|
|
232
|
+
type: Boolean,
|
|
233
|
+
reflect: !0
|
|
234
|
+
})], _.prototype, "shortcuts", void 0), n([g({
|
|
232
235
|
selector: "vf-menu",
|
|
233
236
|
flatten: !0
|
|
234
237
|
})], _.prototype, "_menus", void 0), _ = n([e("vf-menu-bar")], _);
|
|
@@ -62,12 +62,18 @@ export declare class VfMenuItem extends VfMenuItem_base {
|
|
|
62
62
|
*/
|
|
63
63
|
checkable: boolean;
|
|
64
64
|
/**
|
|
65
|
-
* Keyboard shortcut
|
|
66
|
-
* shared shortcut column.
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
65
|
+
* Keyboard shortcut, e.g. `"⌘H"`, drawn left-aligned in the panel's
|
|
66
|
+
* shared shortcut column. The span is `aria-hidden` so the glyphs never
|
|
67
|
+
* concatenate into the item's accessible name ("Print… place of interest
|
|
68
|
+
* sign P") — the host mirrors it as `aria-keyshortcuts` ("Meta+H") instead,
|
|
69
|
+
* so AT announces it *as* a shortcut. A consumer's own `aria-keyshortcuts`
|
|
70
|
+
* wins.
|
|
71
|
+
*
|
|
72
|
+
* Inside a `vf-menu`/`vf-menu-bar` that declares `shortcuts`, this is a
|
|
73
|
+
* LIVE key equivalent, not a legend: a matching keydown anywhere on the
|
|
74
|
+
* page activates the item — menu open or not — claiming the stroke with
|
|
75
|
+
* `preventDefault()` (see the document keydown handler below for the full
|
|
76
|
+
* contract).
|
|
71
77
|
*/
|
|
72
78
|
shortcut: string;
|
|
73
79
|
/**
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { deferActivation as e, emit as t } from "../events.js";
|
|
2
|
+
import { vfElement as n } from "../define.js";
|
|
3
|
+
import { ScaleController as r } from "../scale.js";
|
|
4
|
+
import i from "../_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorate.js";
|
|
5
|
+
import { VfPositioned as a } from "../position.js";
|
|
6
|
+
import { vfDisplay as o } from "../styles/recipes/display-face.js";
|
|
7
|
+
import { vfBase as s } from "../styles/recipes/host.js";
|
|
8
|
+
import { releaseAfterGesture as c } from "../document-listeners.js";
|
|
9
9
|
import { runSelectionBlink as l } from "../motion.js";
|
|
10
10
|
import { CHECKMARK as u, glyphSvg as d } from "../glyphs.js";
|
|
11
11
|
import { LitElement as f, css as p, html as m, nothing as h } from "lit";
|
|
@@ -24,11 +24,24 @@ function b(e) {
|
|
|
24
24
|
let r = t.join("");
|
|
25
25
|
return r ? [...n, r].join("+") : "";
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
function x(e, t) {
|
|
28
|
+
let n = [...t.trim()], r = {
|
|
29
|
+
Meta: !1,
|
|
30
|
+
Control: !1,
|
|
31
|
+
Alt: !1,
|
|
32
|
+
Shift: !1
|
|
33
|
+
};
|
|
34
|
+
for (; n.length > 0 && y.has(n[0]);) r[y.get(n.shift())] = !0;
|
|
35
|
+
let i = n.join("");
|
|
36
|
+
if (!i || !r.Meta && !r.Control && !r.Alt && [...i].length === 1) return !1;
|
|
37
|
+
let a = r.Meta ? e.metaKey || e.ctrlKey : !e.metaKey, o = r.Control ? e.ctrlKey : r.Meta || !e.ctrlKey;
|
|
38
|
+
return a && o && e.altKey === r.Alt && e.shiftKey === r.Shift && e.key.toLowerCase() === i.toLowerCase();
|
|
39
|
+
}
|
|
40
|
+
var S = class extends a(f) {
|
|
28
41
|
static {
|
|
29
42
|
this.styles = [
|
|
30
|
-
|
|
31
|
-
|
|
43
|
+
s,
|
|
44
|
+
o,
|
|
32
45
|
p`
|
|
33
46
|
:host {
|
|
34
47
|
display: block;
|
|
@@ -161,19 +174,21 @@ var x = class extends r(f) {
|
|
|
161
174
|
#r;
|
|
162
175
|
#i;
|
|
163
176
|
constructor() {
|
|
164
|
-
super(), this.scale = new
|
|
177
|
+
super(), this.scale = new r(this), this.disabled = !1, this.checked = !1, this.active = !1, this.checkable = !1, this.shortcut = "", this._blinkPhase = null, this.#t = !1, this.#n = !1, this.#r = this.attachInternals(), this.#i = !1, this.#d = (e) => {
|
|
178
|
+
e.defaultPrevented || e.isComposing || this.disabled || !this.shortcut || this.closest("vf-menu[shortcuts], vf-menu-bar[shortcuts]") && x(e, this.shortcut) && (e.preventDefault(), !(e.repeat || this.#t) && (t(this, "vf-menu-flash-request", { item: this }, { composed: !1 }), this.activate()));
|
|
179
|
+
}, this.addEventListener("keydown", this.#u), this.addEventListener("pointerdown", this.#c), this.addEventListener("click", this.#l);
|
|
165
180
|
}
|
|
166
181
|
get #a() {
|
|
167
182
|
return this.checkable || this.#n;
|
|
168
183
|
}
|
|
169
184
|
connectedCallback() {
|
|
170
|
-
super.connectedCallback(), this.#s(), this.#o(), this.hasAttribute("tabindex") || (this.tabIndex = -1);
|
|
185
|
+
super.connectedCallback(), this.#s(), this.#o(), this.hasAttribute("tabindex") || (this.tabIndex = -1), document.addEventListener("keydown", this.#d);
|
|
171
186
|
}
|
|
172
187
|
disconnectedCallback() {
|
|
173
|
-
super.disconnectedCallback(), this.#d();
|
|
188
|
+
super.disconnectedCallback(), document.removeEventListener("keydown", this.#d), this.#f();
|
|
174
189
|
}
|
|
175
190
|
updated(e) {
|
|
176
|
-
e.has("disabled") && (this.#r.ariaDisabled = this.disabled ? "true" : null, this.disabled && this.#
|
|
191
|
+
e.has("disabled") && (this.#r.ariaDisabled = this.disabled ? "true" : null, this.disabled && this.#f()), e.has("checked") && this.checked && (this.#n = !0), (e.has("checked") || e.has("checkable")) && this.#s(), e.has("shortcut") && this.#o();
|
|
177
192
|
}
|
|
178
193
|
#o() {
|
|
179
194
|
this.#r.ariaKeyShortcuts = b(this.shortcut) || null;
|
|
@@ -201,53 +216,56 @@ var x = class extends r(f) {
|
|
|
201
216
|
`;
|
|
202
217
|
}
|
|
203
218
|
#c() {
|
|
204
|
-
this.#i = this.closest("vf-menu") !== null, this.#i &&
|
|
219
|
+
this.#i = this.closest("vf-menu") !== null, this.#i && c(() => {
|
|
205
220
|
this.#i = !1;
|
|
206
221
|
});
|
|
207
222
|
}
|
|
208
|
-
#l(
|
|
223
|
+
#l(t) {
|
|
209
224
|
if (this.#i) {
|
|
210
225
|
this.#i = !1;
|
|
211
226
|
return;
|
|
212
227
|
}
|
|
213
|
-
|
|
228
|
+
e(this, t, () => this.activate());
|
|
214
229
|
}
|
|
215
230
|
#u(e) {
|
|
216
231
|
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), e.stopPropagation(), this.activate());
|
|
217
232
|
}
|
|
233
|
+
#d;
|
|
218
234
|
activate() {
|
|
219
235
|
if (this.disabled || this.#t) return;
|
|
220
236
|
this.#t = !0;
|
|
221
237
|
let e = l((e) => {
|
|
222
238
|
this._blinkPhase = e ? "on" : "off";
|
|
223
239
|
}, () => {
|
|
224
|
-
this._blinkPhase = null, this.#t = !1, this.#e = void 0, this.#
|
|
240
|
+
this._blinkPhase = null, this.#t = !1, this.#e = void 0, this.#p();
|
|
225
241
|
});
|
|
226
242
|
this.#t && (this.#e = e);
|
|
227
243
|
}
|
|
228
|
-
#
|
|
244
|
+
#f() {
|
|
229
245
|
this.#t && (this.#e?.cancel(), this.#e = void 0, this.#t = !1, this._blinkPhase = null);
|
|
230
246
|
}
|
|
231
|
-
#
|
|
247
|
+
#p() {
|
|
232
248
|
let e = this.value ?? (this.textContent ?? "").trim();
|
|
233
|
-
|
|
249
|
+
t(this, "vf-menu-select", {
|
|
234
250
|
value: e,
|
|
235
251
|
item: this
|
|
236
|
-
})
|
|
252
|
+
});
|
|
253
|
+
let n = this.closest("vf-menu");
|
|
254
|
+
(!n || n.hasAttribute("open")) && t(this, "vf-menu-close-request", { item: this }, { composed: !1 });
|
|
237
255
|
}
|
|
238
256
|
};
|
|
239
|
-
|
|
257
|
+
i([g({
|
|
240
258
|
type: Boolean,
|
|
241
259
|
reflect: !0
|
|
242
|
-
})],
|
|
260
|
+
})], S.prototype, "disabled", void 0), i([g({
|
|
243
261
|
type: Boolean,
|
|
244
262
|
reflect: !0
|
|
245
|
-
})],
|
|
263
|
+
})], S.prototype, "checked", void 0), i([g({
|
|
246
264
|
type: Boolean,
|
|
247
265
|
reflect: !0
|
|
248
|
-
})],
|
|
266
|
+
})], S.prototype, "active", void 0), i([g({
|
|
249
267
|
type: Boolean,
|
|
250
268
|
reflect: !0
|
|
251
|
-
})],
|
|
269
|
+
})], S.prototype, "checkable", void 0), i([g()], S.prototype, "shortcut", void 0), i([g()], S.prototype, "value", void 0), i([_()], S.prototype, "_blinkPhase", void 0), S = i([n("vf-menu-item")], S);
|
|
252
270
|
//#endregion
|
|
253
|
-
export {
|
|
271
|
+
export { S as VfMenuItem };
|
|
@@ -29,7 +29,8 @@ declare const VfMenu_base: (new (...args: any[]) => import("../position.js").VfP
|
|
|
29
29
|
* icon for the Apple menu. Keep the `label` attribute set too: it stays the
|
|
30
30
|
* menu's accessible name (the bar item's `aria-label` and the panel's) when
|
|
31
31
|
* the visible title is an image.
|
|
32
|
-
* @csspart label - The menu title in the bar (inverts while open
|
|
32
|
+
* @csspart label - The menu title in the bar (inverts while open; flashes
|
|
33
|
+
* when a closed menu's item is activated by its key equivalent).
|
|
33
34
|
* @csspart panel - The dropped `.vf-panel` containing the items.
|
|
34
35
|
* @cssprop [--vf-menubar-height=20px] - `vf-menu-bar`
|
|
35
36
|
* @cssprop [--vf-menu-row-height=16px] - `vf-menu-item` row pitch; the panel
|
|
@@ -53,6 +54,16 @@ export declare class VfMenu extends VfMenu_base {
|
|
|
53
54
|
* `vf-menu-bar` when present, otherwise by the menu itself.
|
|
54
55
|
*/
|
|
55
56
|
open: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Makes the items' `shortcut`s live key equivalents: a matching keydown
|
|
59
|
+
* anywhere on the page activates the item — menu open or not — and a
|
|
60
|
+
* closed menu answers by flashing its bar title, MenuKey's acknowledgment.
|
|
61
|
+
* Off by default because key equivalents are page-global and a page may
|
|
62
|
+
* hold several menus of which only one is *the* menu bar; on a bar, declare
|
|
63
|
+
* it there once for every menu in it. The full claim contract lives on
|
|
64
|
+
* `vf-menu-item.shortcut`.
|
|
65
|
+
*/
|
|
66
|
+
shortcuts: boolean;
|
|
56
67
|
/**
|
|
57
68
|
* The bar label's tabindex. A parent `vf-menu-bar` owns a roving tabindex
|
|
58
69
|
* across its menus and sets this to 0 on the active menu, -1 on the rest,
|
|
@@ -77,6 +88,8 @@ export declare class VfMenu extends VfMenu_base {
|
|
|
77
88
|
* src/menu-press.ts), so it wants the box, not the element.
|
|
78
89
|
*/
|
|
79
90
|
get labelRect(): DOMRect | null;
|
|
91
|
+
/** `true` while the key-equivalent flash paints the title inverted. */
|
|
92
|
+
private _flashOn;
|
|
80
93
|
connectedCallback(): void;
|
|
81
94
|
disconnectedCallback(): void;
|
|
82
95
|
protected updated(changed: Map<PropertyKey, unknown>): void;
|