@dogsbay/elements 0.2.0-beta.115 → 0.2.0-beta.116
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/{base-BtvRtAsC.d.ts → base-D1Rz70fn.d.ts} +1 -0
- package/dist/chunk-3AEQ6KHV.js +70 -0
- package/dist/chunk-3AEQ6KHV.js.map +1 -0
- package/dist/chunk-3FMXAKOU.js +383 -0
- package/dist/chunk-3FMXAKOU.js.map +1 -0
- package/dist/{chunk-ZLIF4UYD.js → chunk-4YPDR3W6.js} +13 -4
- package/dist/chunk-4YPDR3W6.js.map +1 -0
- package/dist/{chunk-IMW234S2.js → chunk-CLUADA3G.js} +2 -2
- package/dist/chunk-EGU66XCL.js +116 -0
- package/dist/chunk-EGU66XCL.js.map +1 -0
- package/dist/{chunk-THLTJ2HB.js → chunk-ETBBSA3I.js} +2 -2
- package/dist/chunk-FIJZRZEN.js +90 -0
- package/dist/chunk-FIJZRZEN.js.map +1 -0
- package/dist/{chunk-ABP4WEKU.js → chunk-K6DPDBAG.js} +25 -2
- package/dist/chunk-K6DPDBAG.js.map +1 -0
- package/dist/{chunk-5S2MMI3R.js → chunk-LAUNXWKJ.js} +2 -2
- package/dist/chunk-MAD6XJY4.js +256 -0
- package/dist/chunk-MAD6XJY4.js.map +1 -0
- package/dist/chunk-MEOIAZDF.js +140 -0
- package/dist/chunk-MEOIAZDF.js.map +1 -0
- package/dist/{chunk-WTARNLNI.js → chunk-QSRUT67Y.js} +2 -2
- package/dist/chunk-S62ZVVO3.js +234 -0
- package/dist/chunk-S62ZVVO3.js.map +1 -0
- package/dist/chunk-SLJG53M7.js +208 -0
- package/dist/chunk-SLJG53M7.js.map +1 -0
- package/dist/{chunk-RVJC6M2U.js → chunk-V4P3UR4I.js} +2 -2
- package/dist/{chunk-VJXEM5O6.js → chunk-VW7HZY2B.js} +2 -2
- package/dist/db-accordion.d.ts +1 -1
- package/dist/db-accordion.js +2 -2
- package/dist/db-card.d.ts +1 -1
- package/dist/db-card.js +2 -2
- package/dist/db-code-block.d.ts +1 -1
- package/dist/db-code-block.js +2 -2
- package/dist/db-collapsible.d.ts +1 -1
- package/dist/db-collapsible.js +2 -2
- package/dist/db-combobox.d.ts +70 -0
- package/dist/db-combobox.js +9 -0
- package/dist/db-combobox.js.map +1 -0
- package/dist/db-dialog.d.ts +62 -0
- package/dist/db-dialog.js +9 -0
- package/dist/db-dialog.js.map +1 -0
- package/dist/db-link-button.d.ts +1 -1
- package/dist/db-link-button.js +2 -2
- package/dist/db-nav-tree.d.ts +83 -0
- package/dist/db-nav-tree.js +9 -0
- package/dist/db-nav-tree.js.map +1 -0
- package/dist/db-popover.d.ts +42 -0
- package/dist/db-popover.js +9 -0
- package/dist/db-popover.js.map +1 -0
- package/dist/db-select.d.ts +72 -0
- package/dist/db-select.js +9 -0
- package/dist/db-select.js.map +1 -0
- package/dist/db-steps.d.ts +1 -1
- package/dist/db-steps.js +2 -2
- package/dist/db-tabs.d.ts +8 -1
- package/dist/db-tabs.js +2 -2
- package/dist/db-toc.d.ts +32 -0
- package/dist/db-toc.js +8 -0
- package/dist/db-toc.js.map +1 -0
- package/dist/db-tooltip.d.ts +48 -0
- package/dist/db-tooltip.js +9 -0
- package/dist/db-tooltip.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.js +40 -11
- package/package.json +30 -2
- package/dist/chunk-ABP4WEKU.js.map +0 -1
- package/dist/chunk-ZLIF4UYD.js.map +0 -1
- /package/dist/{chunk-IMW234S2.js.map → chunk-CLUADA3G.js.map} +0 -0
- /package/dist/{chunk-THLTJ2HB.js.map → chunk-ETBBSA3I.js.map} +0 -0
- /package/dist/{chunk-5S2MMI3R.js.map → chunk-LAUNXWKJ.js.map} +0 -0
- /package/dist/{chunk-WTARNLNI.js.map → chunk-QSRUT67Y.js.map} +0 -0
- /package/dist/{chunk-RVJC6M2U.js.map → chunk-V4P3UR4I.js.map} +0 -0
- /package/dist/{chunk-VJXEM5O6.js.map → chunk-VW7HZY2B.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/db-dialog.ts"],"sourcesContent":["import { FocusTrap } from \"@dogsbay/primitives/focus-trap\";\nimport { ScrollLock } from \"@dogsbay/primitives/scroll-lock\";\nimport { DismissController } from \"@dogsbay/primitives/dismiss\";\nimport { markOthersInert } from \"@dogsbay/primitives/inert\";\nimport { DogsbayElement, ensureDefaultDisplay } from \"./base.js\";\nimport { afterAnimations, ownOne, resolveAsChild, uid } from \"./utils.js\";\n\nexport type DialogCloseReason = \"escape-key\" | \"outside-press\" | \"close-press\" | \"trigger-press\" | \"api\";\n\n/**\n * `<db-dialog>` — Modal dialog (WAI-ARIA APG \"Dialog (Modal)\").\n *\n * Same parts as the Astro Dialog. When `[data-part=\"content\"]` is a native\n * `<dialog>`, it opens with `showModal()`: the browser puts it in the top\n * layer, makes the rest of the page inert and handles Escape. Otherwise the\n * content is a positioned element and the primitives do that work\n * (FocusTrap, markOthersInert, ScrollLock, DismissController). Content is\n * never moved out of the element, so nested elements keep working.\n *\n * Attributes:\n * open — open on connect\n * dismissible=\"false\" — ignore Escape and outside clicks\n *\n * Parts:\n * [data-part=\"trigger\"] — opens (optional; `data-as-child` supported)\n * [data-part=\"content\"] — `<dialog>` (recommended) or any element\n * [data-part=\"backdrop\"] — overlay for non-native content\n * [data-part=\"title\"] — becomes aria-labelledby\n * [data-part=\"description\"] — becomes aria-describedby\n * [data-part=\"close\"] — closes\n *\n * External triggers: any element with `data-dialog-for=\"<id>\"`, where the id\n * is the element's or the content's, opens it from anywhere on the page.\n *\n * Events: db-dialog:open, db-dialog:close (detail: { reason })\n */\nexport class DbDialog extends DogsbayElement {\n content: HTMLElement | null = null;\n private backdrop: HTMLElement | null = null;\n private trigger: HTMLElement | null = null;\n private native = false;\n private _open = false;\n private openedBy: HTMLElement | null = null;\n private focusTrap: FocusTrap | null = null;\n private dismiss: DismissController | null = null;\n private cleanupInert: (() => void) | null = null;\n\n get open(): boolean {\n return this._open;\n }\n\n private get dismissible(): boolean {\n return this.getAttribute(\"dismissible\") !== \"false\";\n }\n\n private onTriggerClick = (e: Event) => {\n e.preventDefault();\n this.toggle(e.currentTarget as HTMLElement);\n };\n\n private onHostClick = (e: Event) => {\n const close = (e.target as HTMLElement).closest(\"[data-part='close']\");\n if (close && close.closest(\"db-dialog\") === this) this.close(\"close-press\");\n };\n\n private onDocumentClick = (e: Event) => {\n const ext = (e.target as HTMLElement).closest?.(\"[data-dialog-for]\") as HTMLElement | null;\n if (!ext || ext === this.trigger) return;\n const target = ext.getAttribute(\"data-dialog-for\");\n if (target && (target === this.id || target === this.content?.id)) {\n e.preventDefault();\n this.toggle(ext);\n }\n };\n\n // Native <dialog>: Escape fires \"cancel\".\n private onCancel = (e: Event) => {\n e.preventDefault();\n if (this.dismissible) this.close(\"escape-key\");\n };\n\n // Native <dialog>: a click on the ::backdrop targets the dialog itself.\n private onNativeClick = (e: MouseEvent) => {\n if (!this.dismissible || e.target !== this.content || !this.content) return;\n const r = this.content.getBoundingClientRect();\n const inside = e.clientX >= r.left && e.clientX <= r.right && e.clientY >= r.top && e.clientY <= r.bottom;\n if (!inside && (e.clientX !== 0 || e.clientY !== 0)) this.close(\"outside-press\");\n };\n\n // Native <dialog> closed by the platform (form method=\"dialog\").\n private onNativeClose = () => {\n if (this._open) this.finishClose(\"close-press\");\n };\n\n protected setup() {\n this.content = ownOne(this, \"[data-part='content']\");\n if (!this.content) return;\n this.native = typeof HTMLDialogElement !== \"undefined\" && this.content instanceof HTMLDialogElement && typeof this.content.showModal === \"function\";\n this.backdrop = ownOne(this, \"[data-part='backdrop']\");\n this.trigger = resolveAsChild(ownOne(this, \"[data-part='trigger']\"));\n\n const content = this.content;\n if (!content.id) content.id = uid(\"db-dialog\");\n if (!this.native) {\n content.setAttribute(\"role\", content.getAttribute(\"role\") || \"dialog\");\n content.setAttribute(\"aria-modal\", \"true\");\n content.hidden = !this.hasAttribute(\"open\");\n if (this.backdrop) this.backdrop.hidden = true;\n }\n\n const title = content.querySelector<HTMLElement>(\"[data-part='title']\");\n if (title && !content.hasAttribute(\"aria-labelledby\") && !content.hasAttribute(\"aria-label\")) {\n title.id ||= uid(\"db-dialog-title\");\n content.setAttribute(\"aria-labelledby\", title.id);\n }\n const desc = content.querySelector<HTMLElement>(\"[data-part='description']\");\n if (desc && !content.hasAttribute(\"aria-describedby\")) {\n desc.id ||= uid(\"db-dialog-desc\");\n content.setAttribute(\"aria-describedby\", desc.id);\n }\n\n for (const t of this.triggers()) this.prepareTrigger(t);\n this.setState(\"closed\");\n\n if (!this.native) {\n this.focusTrap = new FocusTrap(content);\n this.dismiss = new DismissController(content, {\n onDismiss: (reason) => this.dismissible && this.close(reason),\n });\n }\n }\n\n protected connect() {\n if (!this.content) return;\n this.trigger?.addEventListener(\"click\", this.onTriggerClick);\n this.addEventListener(\"click\", this.onHostClick);\n document.addEventListener(\"click\", this.onDocumentClick);\n if (this.native) {\n this.content.addEventListener(\"cancel\", this.onCancel);\n this.content.addEventListener(\"click\", this.onNativeClick as EventListener);\n this.content.addEventListener(\"close\", this.onNativeClose);\n }\n // External triggers may come later in the document than the dialog.\n queueMicrotask(() => {\n if (!this.isConnected) return;\n for (const t of this.triggers()) if (!t.hasAttribute(\"aria-controls\")) this.prepareTrigger(t);\n if (this.hasAttribute(\"open\") && !this._open) this.show();\n });\n }\n\n protected disconnect() {\n this.trigger?.removeEventListener(\"click\", this.onTriggerClick);\n this.removeEventListener(\"click\", this.onHostClick);\n document.removeEventListener(\"click\", this.onDocumentClick);\n if (this.content && this.native) {\n this.content.removeEventListener(\"cancel\", this.onCancel);\n this.content.removeEventListener(\"click\", this.onNativeClick as EventListener);\n this.content.removeEventListener(\"close\", this.onNativeClose);\n }\n if (this._open) this.finishClose(\"api\", false);\n }\n\n /** Internal trigger plus every `[data-dialog-for]` pointing here. */\n private triggers(): HTMLElement[] {\n const out: HTMLElement[] = this.trigger ? [this.trigger] : [];\n const ids = [this.id, this.content?.id].filter(Boolean);\n for (const id of ids) document.querySelectorAll<HTMLElement>(`[data-dialog-for=\"${CSS.escape(id!)}\"]`).forEach((el) => out.push(el));\n return out;\n }\n\n private prepareTrigger(t: HTMLElement) {\n if (!t.hasAttribute(\"aria-haspopup\")) t.setAttribute(\"aria-haspopup\", \"dialog\");\n t.setAttribute(\"aria-controls\", this.content!.id);\n t.setAttribute(\"aria-expanded\", \"false\");\n }\n\n private setState(state: \"open\" | \"closed\") {\n this.setAttribute(\"data-state\", state);\n this.content?.setAttribute(\"data-state\", state);\n this.backdrop?.setAttribute(\"data-state\", state);\n }\n\n toggle(opener?: HTMLElement) {\n if (this._open) this.close(\"trigger-press\");\n else this.show(opener);\n }\n\n show(opener?: HTMLElement) {\n const content = this.content;\n if (!content || this._open) return;\n this._open = true;\n this.openedBy = opener ?? (document.activeElement as HTMLElement | null) ?? this.trigger;\n for (const t of this.triggers()) {\n this.prepareTrigger(t);\n t.setAttribute(\"aria-expanded\", \"true\");\n }\n ScrollLock.activate();\n if (this.native) {\n const d = content as HTMLDialogElement;\n if (!d.open) d.showModal();\n } else {\n content.hidden = false;\n if (this.backdrop) this.backdrop.hidden = false;\n this.cleanupInert = markOthersInert(content);\n this.focusTrap?.activate();\n this.dismiss?.activate();\n }\n this.setState(\"open\");\n this.dispatchEvent(new CustomEvent(\"db-dialog:open\", { bubbles: true }));\n }\n\n close(reason: DialogCloseReason = \"api\") {\n if (!this._open) return;\n this.finishClose(reason);\n }\n\n private finishClose(reason: DialogCloseReason, restoreFocus = true) {\n const content = this.content!;\n this._open = false;\n this.setState(\"closed\");\n for (const t of this.triggers()) t.setAttribute(\"aria-expanded\", \"false\");\n ScrollLock.deactivate();\n if (this.native) {\n const d = content as HTMLDialogElement;\n if (d.open) d.close();\n } else {\n this.dismiss?.deactivate();\n this.focusTrap?.deactivate();\n this.cleanupInert?.();\n this.cleanupInert = null;\n afterAnimations(content, () => {\n if (this._open) return;\n content.hidden = true;\n if (this.backdrop) this.backdrop.hidden = true;\n });\n }\n const back = this.openedBy;\n this.openedBy = null;\n if (restoreFocus && back && document.contains(back)) back.focus();\n this.dispatchEvent(new CustomEvent(\"db-dialog:close\", { detail: { reason }, bubbles: true }));\n }\n}\n\nensureDefaultDisplay();\n\nif (!customElements.get(\"db-dialog\")) {\n customElements.define(\"db-dialog\", DbDialog);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DogsbayElement,
|
|
3
3
|
ensureDefaultDisplay
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-K6DPDBAG.js";
|
|
5
5
|
|
|
6
6
|
// src/db-code-block.ts
|
|
7
7
|
var DbCodeBlock = class extends DogsbayElement {
|
|
@@ -88,4 +88,4 @@ if (!customElements.get("db-code-block")) {
|
|
|
88
88
|
export {
|
|
89
89
|
DbCodeBlock
|
|
90
90
|
};
|
|
91
|
-
//# sourceMappingURL=chunk-
|
|
91
|
+
//# sourceMappingURL=chunk-V4P3UR4I.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DogsbayElement,
|
|
3
3
|
ensureDefaultDisplay
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-K6DPDBAG.js";
|
|
5
5
|
|
|
6
6
|
// src/db-steps.ts
|
|
7
7
|
var DbSteps = class extends DogsbayElement {
|
|
@@ -21,4 +21,4 @@ if (!customElements.get("db-steps")) {
|
|
|
21
21
|
export {
|
|
22
22
|
DbSteps
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=chunk-
|
|
24
|
+
//# sourceMappingURL=chunk-VW7HZY2B.js.map
|
package/dist/db-accordion.d.ts
CHANGED
package/dist/db-accordion.js
CHANGED
package/dist/db-card.d.ts
CHANGED
package/dist/db-card.js
CHANGED
package/dist/db-code-block.d.ts
CHANGED
package/dist/db-code-block.js
CHANGED
package/dist/db-collapsible.d.ts
CHANGED
package/dist/db-collapsible.js
CHANGED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { D as DogsbayElement } from './base-D1Rz70fn.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `<db-combobox>` — Editable combobox with a listbox (APG "Editable
|
|
5
|
+
* Combobox With List Autocomplete"). Focus stays in the input; the
|
|
6
|
+
* highlighted option is exposed with aria-activedescendant.
|
|
7
|
+
*
|
|
8
|
+
* Parts (same contract as the Astro Combobox):
|
|
9
|
+
* [data-part="input"] text input, role=combobox
|
|
10
|
+
* [data-part="listbox"] role=listbox
|
|
11
|
+
* [data-part="option"] role=option, data-value, data-disabled
|
|
12
|
+
* [data-part="empty"] shown when a query has no matches (optional)
|
|
13
|
+
*
|
|
14
|
+
* Attributes:
|
|
15
|
+
* filter="contains" (default) the element filters its own options by text
|
|
16
|
+
* filter="none" the page supplies options (search results); the element
|
|
17
|
+
* watches the listbox and manages highlight and ARIA
|
|
18
|
+
* inline the listbox is always shown (e.g. inside a search dialog);
|
|
19
|
+
* aria-expanded tracks whether it has options
|
|
20
|
+
* no-autohighlight do not highlight the first option when the list changes
|
|
21
|
+
*
|
|
22
|
+
* Choosing an option dispatches a cancelable `db-combobox:select`
|
|
23
|
+
* (detail: { value, text, option }). If not cancelled, a link option
|
|
24
|
+
* (`<a href data-part="option">`, the accessible shape for results that
|
|
25
|
+
* navigate: ARIA allows role=option on a link, but not a link inside an
|
|
26
|
+
* option) is followed; otherwise the input takes the option's text and
|
|
27
|
+
* `db-combobox:change` fires. Wrap link options in `<li role="none">`.
|
|
28
|
+
*
|
|
29
|
+
* Other events: db-combobox:update (detail: { count }) when the visible options change.
|
|
30
|
+
*/
|
|
31
|
+
declare class DbCombobox extends DogsbayElement {
|
|
32
|
+
private input;
|
|
33
|
+
private listbox;
|
|
34
|
+
private empty;
|
|
35
|
+
private _open;
|
|
36
|
+
private highlighted;
|
|
37
|
+
private observer;
|
|
38
|
+
private base;
|
|
39
|
+
private optionSeq;
|
|
40
|
+
get open(): boolean;
|
|
41
|
+
private get inline();
|
|
42
|
+
private get filtering();
|
|
43
|
+
/** All options, in order. Read live, so page-supplied results are always current. */
|
|
44
|
+
options(): HTMLElement[];
|
|
45
|
+
private visible;
|
|
46
|
+
protected setup(): void;
|
|
47
|
+
private prepareOptions;
|
|
48
|
+
private onInput;
|
|
49
|
+
private onFocus;
|
|
50
|
+
private onKey;
|
|
51
|
+
private onListClick;
|
|
52
|
+
private onListPointer;
|
|
53
|
+
private onListDown;
|
|
54
|
+
private onDocDown;
|
|
55
|
+
protected connect(): void;
|
|
56
|
+
protected disconnect(): void;
|
|
57
|
+
/** Re-scan options after the page replaced them (filter="none"). */
|
|
58
|
+
refresh(): void;
|
|
59
|
+
private onOptionsChanged;
|
|
60
|
+
private filter;
|
|
61
|
+
private syncExpanded;
|
|
62
|
+
show(): void;
|
|
63
|
+
hide(): void;
|
|
64
|
+
private highlight;
|
|
65
|
+
private clearHighlight;
|
|
66
|
+
/** Returns false when a `db-combobox:select` listener cancelled the choice. */
|
|
67
|
+
private choose;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { DbCombobox };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { D as DogsbayElement } from './base-D1Rz70fn.js';
|
|
2
|
+
|
|
3
|
+
type DialogCloseReason = "escape-key" | "outside-press" | "close-press" | "trigger-press" | "api";
|
|
4
|
+
/**
|
|
5
|
+
* `<db-dialog>` — Modal dialog (WAI-ARIA APG "Dialog (Modal)").
|
|
6
|
+
*
|
|
7
|
+
* Same parts as the Astro Dialog. When `[data-part="content"]` is a native
|
|
8
|
+
* `<dialog>`, it opens with `showModal()`: the browser puts it in the top
|
|
9
|
+
* layer, makes the rest of the page inert and handles Escape. Otherwise the
|
|
10
|
+
* content is a positioned element and the primitives do that work
|
|
11
|
+
* (FocusTrap, markOthersInert, ScrollLock, DismissController). Content is
|
|
12
|
+
* never moved out of the element, so nested elements keep working.
|
|
13
|
+
*
|
|
14
|
+
* Attributes:
|
|
15
|
+
* open — open on connect
|
|
16
|
+
* dismissible="false" — ignore Escape and outside clicks
|
|
17
|
+
*
|
|
18
|
+
* Parts:
|
|
19
|
+
* [data-part="trigger"] — opens (optional; `data-as-child` supported)
|
|
20
|
+
* [data-part="content"] — `<dialog>` (recommended) or any element
|
|
21
|
+
* [data-part="backdrop"] — overlay for non-native content
|
|
22
|
+
* [data-part="title"] — becomes aria-labelledby
|
|
23
|
+
* [data-part="description"] — becomes aria-describedby
|
|
24
|
+
* [data-part="close"] — closes
|
|
25
|
+
*
|
|
26
|
+
* External triggers: any element with `data-dialog-for="<id>"`, where the id
|
|
27
|
+
* is the element's or the content's, opens it from anywhere on the page.
|
|
28
|
+
*
|
|
29
|
+
* Events: db-dialog:open, db-dialog:close (detail: { reason })
|
|
30
|
+
*/
|
|
31
|
+
declare class DbDialog extends DogsbayElement {
|
|
32
|
+
content: HTMLElement | null;
|
|
33
|
+
private backdrop;
|
|
34
|
+
private trigger;
|
|
35
|
+
private native;
|
|
36
|
+
private _open;
|
|
37
|
+
private openedBy;
|
|
38
|
+
private focusTrap;
|
|
39
|
+
private dismiss;
|
|
40
|
+
private cleanupInert;
|
|
41
|
+
get open(): boolean;
|
|
42
|
+
private get dismissible();
|
|
43
|
+
private onTriggerClick;
|
|
44
|
+
private onHostClick;
|
|
45
|
+
private onDocumentClick;
|
|
46
|
+
private onCancel;
|
|
47
|
+
private onNativeClick;
|
|
48
|
+
private onNativeClose;
|
|
49
|
+
protected setup(): void;
|
|
50
|
+
protected connect(): void;
|
|
51
|
+
protected disconnect(): void;
|
|
52
|
+
/** Internal trigger plus every `[data-dialog-for]` pointing here. */
|
|
53
|
+
private triggers;
|
|
54
|
+
private prepareTrigger;
|
|
55
|
+
private setState;
|
|
56
|
+
toggle(opener?: HTMLElement): void;
|
|
57
|
+
show(opener?: HTMLElement): void;
|
|
58
|
+
close(reason?: DialogCloseReason): void;
|
|
59
|
+
private finishClose;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { DbDialog, type DialogCloseReason };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/db-link-button.d.ts
CHANGED
package/dist/db-link-button.js
CHANGED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { D as DogsbayElement } from './base-D1Rz70fn.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* [label, url, children?, noCurrent?]. `noCurrent` (1): never mark this link
|
|
5
|
+
* as the current page even when its URL matches — an alias (a link to a page
|
|
6
|
+
* that lives in another section) or a #section link. The server-rendered
|
|
7
|
+
* tree already leaves those unmarked; lazily built groups must agree.
|
|
8
|
+
*/
|
|
9
|
+
type NavData = [string, string | null, NavData[]?, 1?];
|
|
10
|
+
/**
|
|
11
|
+
* `<db-nav-tree>` — Site navigation tree (APG "Disclosure Navigation").
|
|
12
|
+
*
|
|
13
|
+
* A section that is also a page gets a real link AND a separate toggle
|
|
14
|
+
* button as siblings — never a link inside `<summary>`, which is nested
|
|
15
|
+
* interactive content (axe `nested-interactive`). A section with no page
|
|
16
|
+
* is a single toggle button carrying the label. Every link stays in the
|
|
17
|
+
* normal Tab order; arrow keys are an extra shortcut, not a replacement.
|
|
18
|
+
*
|
|
19
|
+
* Server-rendered markup works without JavaScript: links navigate, and the
|
|
20
|
+
* branch to the current page is rendered open.
|
|
21
|
+
*
|
|
22
|
+
* <db-nav-tree>
|
|
23
|
+
* <ul data-part="list">
|
|
24
|
+
* <li data-part="item" data-state="open">
|
|
25
|
+
* <div data-part="row">
|
|
26
|
+
* <button data-part="toggle" type="button" aria-expanded="true" aria-controls="g1" aria-label="Toggle Guides"></button>
|
|
27
|
+
* <a data-part="link" href="guides/index.html">Guides</a>
|
|
28
|
+
* </div>
|
|
29
|
+
* <ul data-part="group" id="g1">…</ul>
|
|
30
|
+
* </li>
|
|
31
|
+
* <li data-part="item"><div data-part="row"><a data-part="link" href="faq.html" aria-current="page">FAQ</a></div></li>
|
|
32
|
+
* </ul>
|
|
33
|
+
* </db-nav-tree>
|
|
34
|
+
*
|
|
35
|
+
* Lazy sections: a group with `data-lazy` and `data-path="0.3"` is filled
|
|
36
|
+
* from `navData` (or the global named by `data-source`) the first time it
|
|
37
|
+
* opens. URLs in the data are prefixed with the `base` attribute.
|
|
38
|
+
*
|
|
39
|
+
* Attributes:
|
|
40
|
+
* base — prefix for data URLs (e.g. "../../")
|
|
41
|
+
* data-source — name of a window global holding NavData[]
|
|
42
|
+
* toggle-label — accessible name template, default "Toggle {label}"
|
|
43
|
+
* scroll-current — scroll the current page's link into view on connect
|
|
44
|
+
* Built items carry `style="--db-level:N"` (0 at the top) so CSS can indent
|
|
45
|
+
* them; server markup should set the same.
|
|
46
|
+
*
|
|
47
|
+
* toggle-position — "start" (default) or "end": where lazily built rows put
|
|
48
|
+
* the toggle relative to the link. Match the server markup
|
|
49
|
+
* so DOM (and Tab) order follows the visual order.
|
|
50
|
+
*
|
|
51
|
+
* Keyboard (in addition to Tab): ArrowDown/ArrowUp move between visible
|
|
52
|
+
* rows, ArrowRight opens a section or moves into it, ArrowLeft closes it or
|
|
53
|
+
* moves to its parent, Home/End go to the first/last row.
|
|
54
|
+
*
|
|
55
|
+
* Events: db-nav-tree:toggle (detail: { item, open })
|
|
56
|
+
*/
|
|
57
|
+
declare class DbNavTree extends DogsbayElement {
|
|
58
|
+
/** Nav data for lazy sections. Falls back to `window[data-source]`. */
|
|
59
|
+
navData: NavData[] | null;
|
|
60
|
+
private onClick;
|
|
61
|
+
private onKey;
|
|
62
|
+
protected setup(): void;
|
|
63
|
+
protected connect(): void;
|
|
64
|
+
protected disconnect(): void;
|
|
65
|
+
private prepareItem;
|
|
66
|
+
private groupOf;
|
|
67
|
+
private toggleOf;
|
|
68
|
+
/** The row's main focus target: its link, or its toggle for a label-only section. */
|
|
69
|
+
private primary;
|
|
70
|
+
private visibleRows;
|
|
71
|
+
isOpen(item: HTMLElement): boolean;
|
|
72
|
+
toggle(item: HTMLElement): void;
|
|
73
|
+
setOpen(item: HTMLElement, open: boolean): void;
|
|
74
|
+
private apply;
|
|
75
|
+
/** Expand every section on the path to the current page. */
|
|
76
|
+
revealCurrent(): void;
|
|
77
|
+
private data;
|
|
78
|
+
/** Fill a lazy group from nav data. */
|
|
79
|
+
private fill;
|
|
80
|
+
private build;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export { DbNavTree, type NavData };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { D as DogsbayElement } from './base-D1Rz70fn.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `<db-popover>` — Non-modal floating panel (APG "Dialog", non-modal).
|
|
5
|
+
*
|
|
6
|
+
* Same parts as the Astro Popover. The content opens in the browser's top
|
|
7
|
+
* layer (Popover API) where available, so no ancestor's `overflow` clips it
|
|
8
|
+
* and it needs no portal, and floating-ui positions it next to the trigger.
|
|
9
|
+
*
|
|
10
|
+
* Attributes:
|
|
11
|
+
* placement — "bottom" (default), "top-start", … (or data-side/data-align on the content)
|
|
12
|
+
* offset — gap in px (default 8)
|
|
13
|
+
* no-autofocus — keep focus on the trigger when opening
|
|
14
|
+
*
|
|
15
|
+
* Parts: [data-part="trigger"], [data-part="content"], [data-part="close"]
|
|
16
|
+
*
|
|
17
|
+
* Focus: opening moves focus to the first focusable element in the content.
|
|
18
|
+
* Escape and the close part return focus to the trigger; an outside click
|
|
19
|
+
* leaves focus where the user clicked.
|
|
20
|
+
*
|
|
21
|
+
* Events: db-popover:open, db-popover:close (detail: { reason })
|
|
22
|
+
*/
|
|
23
|
+
declare class DbPopover extends DogsbayElement {
|
|
24
|
+
private trigger;
|
|
25
|
+
private content;
|
|
26
|
+
private dismiss;
|
|
27
|
+
private cleanupFloating;
|
|
28
|
+
private _open;
|
|
29
|
+
get open(): boolean;
|
|
30
|
+
private onTriggerClick;
|
|
31
|
+
private onContentClick;
|
|
32
|
+
protected setup(): void;
|
|
33
|
+
protected connect(): void;
|
|
34
|
+
protected disconnect(): void;
|
|
35
|
+
private setState;
|
|
36
|
+
private placement;
|
|
37
|
+
toggle(): void;
|
|
38
|
+
show(): void;
|
|
39
|
+
close(reason?: string): void;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { DbPopover };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { D as DogsbayElement } from './base-D1Rz70fn.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `<db-select>` — Select-only combobox (APG "Select-Only Combobox").
|
|
5
|
+
*
|
|
6
|
+
* Two ways to use it:
|
|
7
|
+
*
|
|
8
|
+
* 1. The Astro Select parts (same contract as `ui/src/select`):
|
|
9
|
+
* [data-part="trigger"] button, role=combobox (focus stays here)
|
|
10
|
+
* [data-part="value"] shows the selected label (data-placeholder)
|
|
11
|
+
* [data-part="content"] role=listbox
|
|
12
|
+
* [data-part="item"] role=option, data-value, aria-disabled
|
|
13
|
+
* [data-part="group"] / [data-part="label"]
|
|
14
|
+
*
|
|
15
|
+
* 2. Progressive enhancement of a native `<select>` inside the element.
|
|
16
|
+
* The element builds the parts from its options, keeps the native
|
|
17
|
+
* select in sync (hidden, still submitted with forms) and dispatches a
|
|
18
|
+
* native `change` on it, so existing listeners keep working. With no
|
|
19
|
+
* JavaScript the native select is what the user gets.
|
|
20
|
+
*
|
|
21
|
+
* The listbox opens in the top layer where supported. Focus never leaves
|
|
22
|
+
* the trigger: the highlighted option is exposed with aria-activedescendant.
|
|
23
|
+
*
|
|
24
|
+
* Attributes: name, default-value, required, disabled
|
|
25
|
+
* Events: db-select:change (detail: { value })
|
|
26
|
+
*/
|
|
27
|
+
declare class DbSelect extends DogsbayElement {
|
|
28
|
+
private trigger;
|
|
29
|
+
private content;
|
|
30
|
+
private valueEl;
|
|
31
|
+
private items;
|
|
32
|
+
private nativeSelect;
|
|
33
|
+
private hiddenInput;
|
|
34
|
+
private labelEl;
|
|
35
|
+
private onLabelClick;
|
|
36
|
+
private dismiss;
|
|
37
|
+
private typeahead;
|
|
38
|
+
private cleanupFloating;
|
|
39
|
+
private _open;
|
|
40
|
+
private _value;
|
|
41
|
+
private highlighted;
|
|
42
|
+
get open(): boolean;
|
|
43
|
+
get value(): string;
|
|
44
|
+
set value(v: string);
|
|
45
|
+
/** Disabled when the host or the enhanced native select is. */
|
|
46
|
+
private get isDisabled();
|
|
47
|
+
private syncing;
|
|
48
|
+
/** Re-read the native select's value (after script changes it or a form reset). */
|
|
49
|
+
refresh(): void;
|
|
50
|
+
private onNativeChange;
|
|
51
|
+
private onFormReset;
|
|
52
|
+
private enabled;
|
|
53
|
+
protected setup(): void;
|
|
54
|
+
/** Build the trigger and listbox from a native <select>, and hide it. */
|
|
55
|
+
private buildFromNative;
|
|
56
|
+
private onTriggerClick;
|
|
57
|
+
private onTriggerKeyUp;
|
|
58
|
+
private onTriggerKey;
|
|
59
|
+
private onListClick;
|
|
60
|
+
private onListPointer;
|
|
61
|
+
protected connect(): void;
|
|
62
|
+
protected disconnect(): void;
|
|
63
|
+
private preventBlur;
|
|
64
|
+
private setState;
|
|
65
|
+
show(): void;
|
|
66
|
+
/** Close the listbox. `refocus` is false for outside presses, which keep focus where the user clicked. */
|
|
67
|
+
close(refocus?: boolean): void;
|
|
68
|
+
private highlight;
|
|
69
|
+
private select;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export { DbSelect };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/db-steps.d.ts
CHANGED
package/dist/db-steps.js
CHANGED
package/dist/db-tabs.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as DogsbayElement } from './base-
|
|
1
|
+
import { D as DogsbayElement } from './base-D1Rz70fn.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* `<db-tabs>` — Accessible tabbed interface.
|
|
@@ -25,6 +25,13 @@ declare class DbTabs extends DogsbayElement {
|
|
|
25
25
|
private syncKey;
|
|
26
26
|
private orientation;
|
|
27
27
|
private handleClick;
|
|
28
|
+
/**
|
|
29
|
+
* A synced group follows only a value it HAS. Groups sharing a key need
|
|
30
|
+
* not share a tab set (a web-only snippet group beside an all-SDK one), and
|
|
31
|
+
* selecting a value with no trigger here left the group with every panel
|
|
32
|
+
* hidden and no tab selected.
|
|
33
|
+
*/
|
|
34
|
+
private has;
|
|
28
35
|
private handleStorage;
|
|
29
36
|
private handleSyncEvent;
|
|
30
37
|
/**
|
package/dist/db-tabs.js
CHANGED
package/dist/db-toc.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { D as DogsbayElement } from './base-D1Rz70fn.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `<db-toc>` — "On this page" links that follow the reader (scroll spy).
|
|
5
|
+
*
|
|
6
|
+
* Wraps plain in-page links, so it works as a list of links without
|
|
7
|
+
* JavaScript. The link for the section in view gets `aria-current="location"`
|
|
8
|
+
* and `data-active` (the Astro TableOfContents contract).
|
|
9
|
+
*
|
|
10
|
+
* Links: `a[href^="#"]`, or `[data-toc-link][data-toc-slug]` as in the Astro component.
|
|
11
|
+
*
|
|
12
|
+
* Attributes:
|
|
13
|
+
* offset — px hidden under a sticky header (default 80)
|
|
14
|
+
*
|
|
15
|
+
* Events: db-toc:change (detail: { id })
|
|
16
|
+
*/
|
|
17
|
+
declare class DbToc extends DogsbayElement {
|
|
18
|
+
private links;
|
|
19
|
+
private headings;
|
|
20
|
+
private observer;
|
|
21
|
+
private active;
|
|
22
|
+
private slugOf;
|
|
23
|
+
private onScroll;
|
|
24
|
+
protected setup(): void;
|
|
25
|
+
private onHash;
|
|
26
|
+
protected connect(): void;
|
|
27
|
+
protected disconnect(): void;
|
|
28
|
+
private lastAbove;
|
|
29
|
+
private setActive;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { DbToc };
|