@nvidia-elements/core 2.23.3 → 2.23.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/CHANGELOG.md +16 -0
- package/dist/accordion/accordion2.js +49 -49
- package/dist/accordion/accordion2.js.map +1 -1
- package/dist/alert/alert-group2.js +22 -21
- package/dist/alert/alert-group2.js.map +1 -1
- package/dist/alert/alert2.js +29 -28
- package/dist/alert/alert2.js.map +1 -1
- package/dist/avatar/avatar-group2.js +9 -9
- package/dist/avatar/avatar-group2.js.map +1 -1
- package/dist/avatar/avatar2.js +12 -11
- package/dist/avatar/avatar2.js.map +1 -1
- package/dist/badge/badge2.js +27 -26
- package/dist/badge/badge2.js.map +1 -1
- package/dist/breadcrumb/breadcrumb2.js +17 -17
- package/dist/breadcrumb/breadcrumb2.js.map +1 -1
- package/dist/bundles/index.js +6 -6
- package/dist/button/button2.js +12 -12
- package/dist/button/button2.js.map +1 -1
- package/dist/button-group/button-group2.js +18 -18
- package/dist/button-group/button-group2.js.map +1 -1
- package/dist/card/card2.js +28 -28
- package/dist/card/card2.js.map +1 -1
- package/dist/chat-message/chat-message2.js +15 -14
- package/dist/chat-message/chat-message2.js.map +1 -1
- package/dist/checkbox/checkbox-group2.js +8 -8
- package/dist/checkbox/checkbox-group2.js.map +1 -1
- package/dist/checkbox/checkbox2.js +8 -8
- package/dist/checkbox/checkbox2.js.map +1 -1
- package/dist/color/color2.js +21 -21
- package/dist/color/color2.js.map +1 -1
- package/dist/combobox/combobox2.js +37 -37
- package/dist/combobox/combobox2.js.map +1 -1
- package/dist/copy-button/copy-button.d.ts +1 -1
- package/dist/copy-button/copy-button2.js +21 -21
- package/dist/copy-button/copy-button2.js.map +1 -1
- package/dist/custom-elements.json +0 -76
- package/dist/data.snippets.json +27 -27
- package/dist/date/date2.js +19 -19
- package/dist/date/date2.js.map +1 -1
- package/dist/datetime/datetime2.js +19 -19
- package/dist/datetime/datetime2.js.map +1 -1
- package/dist/dialog/dialog-footer2.js +7 -7
- package/dist/dialog/dialog-footer2.js.map +1 -1
- package/dist/dialog/dialog-header2.js +7 -7
- package/dist/dialog/dialog-header2.js.map +1 -1
- package/dist/dialog/dialog.js +1 -1
- package/dist/dialog/dialog.js.map +1 -1
- package/dist/dialog/dialog2.js +25 -25
- package/dist/dialog/dialog2.js.map +1 -1
- package/dist/divider/divider2.js +12 -12
- package/dist/divider/divider2.js.map +1 -1
- package/dist/dot/dot2.js +17 -16
- package/dist/dot/dot2.js.map +1 -1
- package/dist/drag-handle/drag-handle2.js +12 -12
- package/dist/drag-handle/drag-handle2.js.map +1 -1
- package/dist/drawer/drawer-content2.js +7 -7
- package/dist/drawer/drawer-content2.js.map +1 -1
- package/dist/drawer/drawer-footer2.js +7 -7
- package/dist/drawer/drawer-footer2.js.map +1 -1
- package/dist/drawer/drawer-header2.js +7 -7
- package/dist/drawer/drawer-header2.js.map +1 -1
- package/dist/drawer/drawer.js +1 -1
- package/dist/drawer/drawer.js.map +1 -1
- package/dist/drawer/drawer2.js +21 -21
- package/dist/drawer/drawer2.js.map +1 -1
- package/dist/dropdown/dropdown-footer2.js +7 -7
- package/dist/dropdown/dropdown-footer2.js.map +1 -1
- package/dist/dropdown/dropdown-header2.js +7 -7
- package/dist/dropdown/dropdown-header2.js.map +1 -1
- package/dist/dropdown/dropdown2.js +21 -21
- package/dist/dropdown/dropdown2.js.map +1 -1
- package/dist/dropdown-group/dropdown-group.js +10 -10
- package/dist/dropdown-group/dropdown-group.js.map +1 -1
- package/dist/dropzone/dropzone2.js +19 -19
- package/dist/dropzone/dropzone2.js.map +1 -1
- package/dist/file/file2.js +8 -8
- package/dist/file/file2.js.map +1 -1
- package/dist/format-bytes/format-bytes2.js +13 -13
- package/dist/format-bytes/format-bytes2.js.map +1 -1
- package/dist/format-datetime/format-datetime2.js +14 -14
- package/dist/format-datetime/format-datetime2.js.map +1 -1
- package/dist/format-number/format-number2.js +20 -20
- package/dist/format-number/format-number2.js.map +1 -1
- package/dist/format-relative-time/format-relative-time2.js +11 -11
- package/dist/format-relative-time/format-relative-time2.js.map +1 -1
- package/dist/format-truncate/format-truncate2.js +21 -21
- package/dist/format-truncate/format-truncate2.js.map +1 -1
- package/dist/forms/control/control2.js +30 -29
- package/dist/forms/control/control2.js.map +1 -1
- package/dist/forms/control-group/control-group2.js +19 -18
- package/dist/forms/control-group/control-group2.js.map +1 -1
- package/dist/forms/control-message/control-message2.js +15 -15
- package/dist/forms/control-message/control-message2.js.map +1 -1
- package/dist/gauge/gauge2.js +20 -20
- package/dist/gauge/gauge2.js.map +1 -1
- package/dist/ghost/ghost2.js +10 -10
- package/dist/ghost/ghost2.js.map +1 -1
- package/dist/grid/cell/cell2.js +9 -9
- package/dist/grid/cell/cell2.js.map +1 -1
- package/dist/grid/column/column2.js +16 -16
- package/dist/grid/column/column2.js.map +1 -1
- package/dist/grid/footer/footer2.js +12 -12
- package/dist/grid/footer/footer2.js.map +1 -1
- package/dist/grid/grid2.js +30 -30
- package/dist/grid/grid2.js.map +1 -1
- package/dist/grid/header/header2.js +20 -20
- package/dist/grid/header/header2.js.map +1 -1
- package/dist/grid/placeholder/placeholder2.js +9 -9
- package/dist/grid/placeholder/placeholder2.js.map +1 -1
- package/dist/grid/row/row2.js +15 -15
- package/dist/grid/row/row2.js.map +1 -1
- package/dist/icon/icon2.js +40 -40
- package/dist/icon/icon2.js.map +1 -1
- package/dist/icon-button/icon-button2.js +17 -17
- package/dist/icon-button/icon-button2.js.map +1 -1
- package/dist/iframe/iframe2.js +7 -7
- package/dist/iframe/iframe2.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/input/input-group2.js +8 -8
- package/dist/input/input-group2.js.map +1 -1
- package/dist/input/input2.js +10 -10
- package/dist/input/input2.js.map +1 -1
- package/dist/internal/controllers/state-expanded.controller.js +1 -1
- package/dist/internal/controllers/state-expanded.controller.js.map +1 -1
- package/dist/internal/controllers/state-highlighted.controller.js +1 -1
- package/dist/internal/controllers/state-highlighted.controller.js.map +1 -1
- package/dist/internal/controllers/state-scroll.controller.js +1 -1
- package/dist/internal/controllers/state-scroll.controller.js.map +1 -1
- package/dist/internal/controllers/state-selected.controller.js +1 -1
- package/dist/internal/controllers/state-selected.controller.js.map +1 -1
- package/dist/internal/controllers/type-anchor.controller.js +1 -1
- package/dist/internal/controllers/type-anchor.controller.js.map +1 -1
- package/dist/internal/controllers/type-closable.controller.js +1 -1
- package/dist/internal/controllers/type-closable.controller.js.map +1 -1
- package/dist/internal/controllers/type-expandable.controller.js +1 -1
- package/dist/internal/controllers/type-expandable.controller.js.map +1 -1
- package/dist/internal/controllers/type-native-popover.controller.js +6 -6
- package/dist/internal/controllers/type-native-popover.controller.js.map +1 -1
- package/dist/internal/controllers/type-popover.controller.examples.js.map +1 -1
- package/dist/internal/controllers/type-selectable.controller.js +1 -1
- package/dist/internal/controllers/type-selectable.controller.js.map +1 -1
- package/dist/internal/index.d.ts +0 -1
- package/dist/internal/index.js +57 -61
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/styles/index.d.ts +0 -1
- package/dist/internal/styles/index.js +5 -15
- package/dist/internal/styles/index.js.map +1 -1
- package/dist/internal/utils/a11y.d.ts +0 -3
- package/dist/internal/utils/a11y.js +6 -9
- package/dist/internal/utils/a11y.js.map +1 -1
- package/dist/joystick/joystick2.js +19 -19
- package/dist/joystick/joystick2.js.map +1 -1
- package/dist/logo/logo2.js +14 -13
- package/dist/logo/logo2.js.map +1 -1
- package/dist/menu/menu-group2.js +20 -20
- package/dist/menu/menu-group2.js.map +1 -1
- package/dist/menu/menu-item2.js +11 -11
- package/dist/menu/menu-item2.js.map +1 -1
- package/dist/menu/menu2.js +14 -14
- package/dist/menu/menu2.js.map +1 -1
- package/dist/month/month2.js +19 -19
- package/dist/month/month2.js.map +1 -1
- package/dist/notification/notification-group2.js +13 -13
- package/dist/notification/notification-group2.js.map +1 -1
- package/dist/notification/notification2.js +31 -31
- package/dist/notification/notification2.js.map +1 -1
- package/dist/page/page-panel/page-panel-content2.js +7 -7
- package/dist/page/page-panel/page-panel-content2.js.map +1 -1
- package/dist/page/page-panel/page-panel-footer2.js +9 -9
- package/dist/page/page-panel/page-panel-footer2.js.map +1 -1
- package/dist/page/page-panel/page-panel-header2.js +9 -9
- package/dist/page/page-panel/page-panel-header2.js.map +1 -1
- package/dist/page/page-panel/page-panel2.js +15 -15
- package/dist/page/page-panel/page-panel2.js.map +1 -1
- package/dist/page/page2.js +13 -13
- package/dist/page/page2.js.map +1 -1
- package/dist/page-header/page-header2.js +10 -10
- package/dist/page-header/page-header2.js.map +1 -1
- package/dist/page-loader/page-loader2.js +13 -13
- package/dist/page-loader/page-loader2.js.map +1 -1
- package/dist/pagination/pagination2.js +34 -34
- package/dist/pagination/pagination2.js.map +1 -1
- package/dist/panel/panel2.js +36 -36
- package/dist/panel/panel2.js.map +1 -1
- package/dist/password/password2.js +19 -19
- package/dist/password/password2.js.map +1 -1
- package/dist/preferences-input/preferences-input.d.ts +1 -1
- package/dist/preferences-input/preferences-input2.js +25 -25
- package/dist/preferences-input/preferences-input2.js.map +1 -1
- package/dist/progress-bar/progress-bar2.js +13 -13
- package/dist/progress-bar/progress-bar2.js.map +1 -1
- package/dist/progress-dot/progress-dot2.js +15 -15
- package/dist/progress-dot/progress-dot2.js.map +1 -1
- package/dist/progress-ring/progress-ring2.js +20 -20
- package/dist/progress-ring/progress-ring2.js.map +1 -1
- package/dist/progressive-filter-chip/progressive-filter-chip2.js +28 -28
- package/dist/progressive-filter-chip/progressive-filter-chip2.js.map +1 -1
- package/dist/pulse/pulse2.js +15 -15
- package/dist/pulse/pulse2.js.map +1 -1
- package/dist/radio/radio-group2.js +8 -8
- package/dist/radio/radio-group2.js.map +1 -1
- package/dist/radio/radio2.js +8 -8
- package/dist/radio/radio2.js.map +1 -1
- package/dist/range/range2.js +16 -16
- package/dist/range/range2.js.map +1 -1
- package/dist/resize-handle/resize-handle2.js +17 -17
- package/dist/resize-handle/resize-handle2.js.map +1 -1
- package/dist/search/search2.js +20 -20
- package/dist/search/search2.js.map +1 -1
- package/dist/select/select2.js +32 -32
- package/dist/select/select2.js.map +1 -1
- package/dist/skeleton/skeleton2.js +14 -14
- package/dist/skeleton/skeleton2.js.map +1 -1
- package/dist/sort-button/sort-button.d.ts +1 -1
- package/dist/sort-button/sort-button2.js +16 -16
- package/dist/sort-button/sort-button2.js.map +1 -1
- package/dist/sparkline/sparkline2.js +45 -44
- package/dist/sparkline/sparkline2.js.map +1 -1
- package/dist/star-rating/star-rating2.js +14 -14
- package/dist/star-rating/star-rating2.js.map +1 -1
- package/dist/steps/steps2.js +32 -32
- package/dist/steps/steps2.js.map +1 -1
- package/dist/switch/switch-group2.js +8 -8
- package/dist/switch/switch-group2.js.map +1 -1
- package/dist/switch/switch2.js +8 -8
- package/dist/switch/switch2.js.map +1 -1
- package/dist/tabs/tabs-group2.js +18 -18
- package/dist/tabs/tabs-group2.js.map +1 -1
- package/dist/tabs/tabs-item-group2.js +9 -9
- package/dist/tabs/tabs-item-group2.js.map +1 -1
- package/dist/tabs/tabs2.js +28 -28
- package/dist/tabs/tabs2.js.map +1 -1
- package/dist/tag/tag2.js +19 -18
- package/dist/tag/tag2.js.map +1 -1
- package/dist/textarea/textarea2.js +9 -9
- package/dist/textarea/textarea2.js.map +1 -1
- package/dist/time/time2.js +19 -19
- package/dist/time/time2.js.map +1 -1
- package/dist/toast/toast2.js +28 -28
- package/dist/toast/toast2.js.map +1 -1
- package/dist/toggletip/toggletip-footer2.js +7 -7
- package/dist/toggletip/toggletip-footer2.js.map +1 -1
- package/dist/toggletip/toggletip-header2.js +7 -7
- package/dist/toggletip/toggletip-header2.js.map +1 -1
- package/dist/toggletip/toggletip2.js +23 -23
- package/dist/toggletip/toggletip2.js.map +1 -1
- package/dist/toolbar/toolbar2.js +20 -19
- package/dist/toolbar/toolbar2.js.map +1 -1
- package/dist/tooltip/tooltip2.js +20 -20
- package/dist/tooltip/tooltip2.js.map +1 -1
- package/dist/tree/tree-node2.js +39 -39
- package/dist/tree/tree-node2.js.map +1 -1
- package/dist/tree/tree2.js +20 -20
- package/dist/tree/tree2.js.map +1 -1
- package/dist/week/week2.js +19 -19
- package/dist/week/week2.js.map +1 -1
- package/dist/workspace/panel/panel2.js +14 -14
- package/dist/workspace/panel/panel2.js.map +1 -1
- package/dist/workspace/panel-content/panel-content2.js +7 -7
- package/dist/workspace/panel-content/panel-content2.js.map +1 -1
- package/dist/workspace/panel-footer/panel-footer2.js +9 -9
- package/dist/workspace/panel-footer/panel-footer2.js.map +1 -1
- package/dist/workspace/panel-header/panel-header2.js +16 -16
- package/dist/workspace/panel-header/panel-header2.js.map +1 -1
- package/dist/workspace/workspace2.js +97 -97
- package/dist/workspace/workspace2.js.map +1 -1
- package/package.json +2 -2
- package/dist/internal/decorators/scoped-registry.d.ts +0 -2
- package/dist/internal/decorators/scoped-registry.js +0 -36
- package/dist/internal/decorators/scoped-registry.js.map +0 -1
- package/dist/internal/styles/base.js +0 -5
- package/dist/internal/styles/base.js.map +0 -1
- package/dist/internal/styles/interaction-state.js +0 -5
- package/dist/internal/styles/interaction-state.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { focusElement as e } from "../utils/focus.js";
|
|
2
2
|
import { clickOutsideElementBounds as t, generateId as n } from "../utils/dom.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { getHostAnchor as r, getHostTrigger as i, hasOpenPopover as a } from "./type-native-popover.utils.js";
|
|
4
|
+
import { attachInternals as o } from "@nvidia-elements/foundations/internal/a11y";
|
|
5
5
|
// src/internal/controllers/type-native-popover.controller.ts
|
|
6
6
|
var s = class {
|
|
7
7
|
get #e() {
|
|
@@ -18,12 +18,12 @@ var s = class {
|
|
|
18
18
|
this.host.showPopover = (e) => {
|
|
19
19
|
if (this.host.isConnected) {
|
|
20
20
|
let n = e?.source ?? null;
|
|
21
|
-
n ||= this.host.anchor ?
|
|
21
|
+
n ||= this.host.anchor ? r(this.host) : this.host.trigger ? i(this.host, this.host.trigger) : globalThis.document.activeElement, t.call(this.host, { source: n });
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
async hostConnected() {
|
|
26
|
-
|
|
26
|
+
o(this.host), this.host.popover = this.host.popoverType ?? null, await this.host.updateComplete, this.host.isConnected && (this.host.setAttribute("nve-popover", ""), this.#m(), this.#p(), this.#d(), this.host.inert = this.host.matches(":not(:popover-open)") && !!this.#e.length, this.host.addEventListener("beforetoggle", this.#b), this.host.addEventListener("toggle", this.#x), this.host.addEventListener("command", this.#S), this.host.addEventListener("interest", this.#C), this.host.addEventListener("loseinterest", this.#w));
|
|
27
27
|
}
|
|
28
28
|
#t = null;
|
|
29
29
|
#n = null;
|
|
@@ -56,7 +56,7 @@ var s = class {
|
|
|
56
56
|
this.host.removeEventListener("pointerdown", this.#T), this.host.removeEventListener("pointerup", this.#E), this.host.addEventListener("pointerdown", this.#T), this.host.addEventListener("pointerup", this.#E);
|
|
57
57
|
}
|
|
58
58
|
get #f() {
|
|
59
|
-
return this.host.trigger ?
|
|
59
|
+
return this.host.trigger ? i(this.host, this.host.trigger) : null;
|
|
60
60
|
}
|
|
61
61
|
async #p() {
|
|
62
62
|
await new Promise((e) => requestAnimationFrame(e));
|
|
@@ -115,7 +115,7 @@ var s = class {
|
|
|
115
115
|
this.host.modal && this.host.matches(":popover-open") && (this.#u = t(e, this.host));
|
|
116
116
|
};
|
|
117
117
|
#E = (e) => {
|
|
118
|
-
this.#u && this.host.popoverDismissible && this.host.modal && this.host.matches(":popover-open") && !
|
|
118
|
+
this.#u && this.host.popoverDismissible && this.host.modal && this.host.matches(":popover-open") && !a(this.host) && t(e, this.host) && this.host.hidePopover();
|
|
119
119
|
};
|
|
120
120
|
#D = (e) => {
|
|
121
121
|
this.host.showPopover({ source: e.currentTarget });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-native-popover.controller.js","names":["TypeNativePopoverController","#nativeTriggers","root","popoverTargetTriggers","commandForTriggers","interestForTriggers","host","showPopover","source","options","getHostAnchor","getHostTrigger","attachInternals","#updateLegacyTriggers","#setupLegacyTriggers","#setupModalLightDismiss","#onBeforeToggle","#onToggle","#onCommand","#onInterest","#onLoseInterest","#observers","observer","#onPointerDown","#onPointerUp","#removeHintTrigger","#clearInterestTimeout","#clearCloseTimeout","#closeTimeout","#interestTimeout","raw","value","#legacyHostTrigger","r","trigger","#previousLegacyTrigger","#clearLegacyTrigger","#hintTrigger","#setupHintTrigger","#setupPopoverTargetTrigger","#onHintMouseEnter","#onHintMouseLeave","generateId","open","focusElement","target","#setCloseTimeout","#toggleFocus","interestDelayStart","#parseInterestDelay","#pointerdownWithinModal","clickOutsideElementBounds","hasOpenPopover"],"sources":["../../../src/internal/controllers/type-native-popover.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport { clickOutsideElementBounds, generateId } from '../utils/dom.js';\nimport { attachInternals } from '../utils/a11y.js';\nimport { focusElement } from '../utils/focus.js';\nimport { getHostAnchor, getHostTrigger, hasOpenPopover } from './type-native-popover.utils.js';\nimport type { InterestEvent, PopoverType } from '../types/index.js';\n\nexport interface NativePopover extends ReactiveElement {\n anchor?: HTMLElement | string;\n closeTimeout?: number;\n popoverType?: PopoverType;\n modal?: boolean;\n popoverDismissible?: boolean;\n _internals?: ElementInternals;\n\n /** @deprecated */\n trigger?: HTMLElement | string;\n /** @deprecated */\n openDelay?: number;\n /** @deprecated */\n behaviorTrigger?: boolean;\n}\n\n/**\n * https://open-ui.org/components/popup.research.explainer\n */\nexport class TypeNativePopoverController<T extends NativePopover> implements ReactiveController {\n get #nativeTriggers(): HTMLElement[] {\n const root = this.host.getRootNode() as HTMLElement;\n const popoverTargetTriggers = Array.from(\n root.querySelectorAll(`[popovertarget=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n const commandForTriggers = Array.from(\n root.querySelectorAll(`[commandfor=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n const interestForTriggers = Array.from(\n root.querySelectorAll(`[interestfor=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n return [...popoverTargetTriggers, ...commandForTriggers, ...interestForTriggers];\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n\n const showPopover = this.host.showPopover;\n this.host.showPopover = (options?: ShowPopoverOptions) => {\n if (this.host.isConnected) {\n // provide legacy fallback for source anchor or trigger if not provided, this can happen if the popover is dynamically created in the DOM without the use of the standard popover api or legacy trigger based api\n let source: HTMLElement | Element | null = options?.source ?? null;\n if (!source) {\n if (this.host.anchor) {\n source = getHostAnchor(this.host);\n } else if (this.host.trigger) {\n source = getHostTrigger(this.host, this.host.trigger);\n } else {\n source = globalThis.document.activeElement;\n }\n }\n\n showPopover.call(this.host, { source: source as HTMLElement });\n }\n };\n }\n\n async hostConnected() {\n attachInternals(this.host);\n this.host.popover = this.host.popoverType ?? null;\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n\n this.host.setAttribute('nve-popover', '');\n this.#updateLegacyTriggers();\n this.#setupLegacyTriggers(); // eslint-disable-line @typescript-eslint/no-floating-promises\n this.#setupModalLightDismiss();\n this.host.inert = this.host.matches(':not(:popover-open)') && !!this.#nativeTriggers.length;\n\n this.host.addEventListener('beforetoggle', this.#onBeforeToggle);\n this.host.addEventListener('toggle', this.#onToggle as EventListener);\n this.host.addEventListener('command', this.#onCommand as EventListener);\n this.host.addEventListener('interest', this.#onInterest as EventListener);\n this.host.addEventListener('loseinterest', this.#onLoseInterest as EventListener);\n }\n\n #interestTimeout: ReturnType<typeof setTimeout> | null = null;\n #closeTimeout: ReturnType<typeof setTimeout> | null = null;\n #observers: MutationObserver[] = [];\n #previousLegacyTrigger: HTMLButtonElement | null = null;\n #hintTrigger: HTMLButtonElement | null = null;\n\n async hostUpdated() {\n this.host.popover = this.host.popoverType ?? null;\n this.#updateLegacyTriggers();\n }\n\n hostDisconnected() {\n this.#observers.forEach(observer => observer.disconnect());\n this.#observers.length = 0;\n this.host.removeEventListener('beforetoggle', this.#onBeforeToggle);\n this.host.removeEventListener('toggle', this.#onToggle as EventListener);\n this.host.removeEventListener('command', this.#onCommand as EventListener);\n this.host.removeEventListener('interest', this.#onInterest as EventListener);\n this.host.removeEventListener('loseinterest', this.#onLoseInterest as EventListener);\n this.host.removeEventListener('pointerdown', this.#onPointerDown);\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.#removeHintTrigger();\n this.#clearInterestTimeout();\n this.#clearCloseTimeout();\n }\n\n #setCloseTimeout() {\n this.#clearCloseTimeout();\n if (this.host.closeTimeout) {\n this.#closeTimeout = setTimeout(() => this.host.hidePopover(), this.host.closeTimeout);\n }\n }\n\n #clearCloseTimeout() {\n if (this.#closeTimeout) {\n clearTimeout(this.#closeTimeout);\n this.#closeTimeout = null;\n }\n }\n\n #clearInterestTimeout() {\n if (this.#interestTimeout) {\n clearTimeout(this.#interestTimeout);\n this.#interestTimeout = null;\n }\n }\n\n #parseInterestDelay(): number {\n const style = getComputedStyle(this.host);\n const raw = (style as unknown as { interestDelayStart: string }).interestDelayStart;\n if (!raw) {\n return 0;\n }\n const value = parseFloat(raw);\n return raw.endsWith('ms') ? value : value * 1000;\n }\n\n #pointerdownWithinModal = false;\n\n #setupModalLightDismiss() {\n this.host.removeEventListener('pointerdown', this.#onPointerDown);\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.host.addEventListener('pointerdown', this.#onPointerDown);\n this.host.addEventListener('pointerup', this.#onPointerUp);\n }\n\n get #legacyHostTrigger(): HTMLElement | null {\n return this.host.trigger ? (getHostTrigger(this.host, this.host.trigger) as HTMLButtonElement) : null;\n }\n\n /**\n * @deprecated Legacy behavior that allows popovers to show as open by default when using the legacy trigger based api\n */\n async #setupLegacyTriggers() {\n await new Promise(r => requestAnimationFrame(r));\n\n // setup host hidden updates for legacy triggers\n const observer = new MutationObserver(() => {\n if (this.host.isConnected && !this.host.hidden && !this.host.matches(':popover-open')) {\n this.host.showPopover();\n }\n\n if (this.host.isConnected && this.host.hidden && this.host.matches(':popover-open')) {\n this.host.hidePopover();\n }\n });\n observer.observe(this.host, { attributes: true, attributeFilter: ['hidden'] });\n this.#observers.push(observer);\n\n // determine if popover is open by default\n if (\n this.host.isConnected &&\n !this.#nativeTriggers.length &&\n !this.host.hidden &&\n !this.host.matches(':popover-open')\n ) {\n this.host.popover = 'manual';\n this.host.showPopover();\n }\n }\n\n /**\n * @deprecated Legacy behavior that allows popovers to show as open by default when using the legacy trigger based api\n */\n #updateLegacyTriggers() {\n const trigger = this.#legacyHostTrigger as HTMLButtonElement;\n\n if (this.#previousLegacyTrigger && this.#previousLegacyTrigger !== trigger) {\n this.#clearLegacyTrigger(this.#previousLegacyTrigger);\n }\n\n if (this.#hintTrigger && this.#hintTrigger !== trigger) {\n this.#removeHintTrigger();\n }\n\n if (!trigger) {\n this.#previousLegacyTrigger = null;\n return;\n }\n\n if (this.host.popoverType === 'hint') {\n this.#setupHintTrigger(trigger);\n } else {\n this.#setupPopoverTargetTrigger(trigger);\n }\n this.#previousLegacyTrigger = trigger;\n }\n\n #setupHintTrigger(trigger: HTMLButtonElement) {\n if (this.#hintTrigger === trigger) return;\n\n trigger.addEventListener('mouseenter', this.#onHintMouseEnter);\n trigger.addEventListener('mouseleave', this.#onHintMouseLeave);\n trigger.addEventListener('focusout', this.#onHintMouseLeave);\n this.#hintTrigger = trigger;\n }\n\n #setupPopoverTargetTrigger(trigger: HTMLButtonElement) {\n this.#removeHintTrigger();\n this.host.id = this.host.id ? this.host.id : generateId();\n trigger.popoverTargetElement = this.host;\n trigger.setAttribute('popovertarget', this.host.id);\n }\n\n #toggleFocus(open: boolean, target: HTMLElement) {\n if (open) {\n // only focus popover if not the active element and not containing the active element already\n if ((this.host.getRootNode() as Document).activeElement !== this.host && !this.host.shadowRoot!.activeElement) {\n focusElement(this.host);\n }\n } else {\n focusElement(target);\n }\n }\n\n #clearLegacyTrigger(trigger: HTMLButtonElement) {\n trigger.popoverTargetElement = null;\n trigger.removeAttribute('popovertarget');\n if (this.#hintTrigger === trigger) {\n this.#removeHintTrigger();\n }\n }\n\n #removeHintTrigger() {\n this.#hintTrigger?.removeEventListener('mouseenter', this.#onHintMouseEnter);\n this.#hintTrigger?.removeEventListener('mouseleave', this.#onHintMouseLeave);\n this.#hintTrigger?.removeEventListener('focusout', this.#onHintMouseLeave);\n this.#hintTrigger = null;\n }\n\n #onBeforeToggle = (e: ToggleEvent) => {\n if (e.newState === 'open') {\n this.host._internals!.states.add('transition-start');\n }\n };\n\n #onToggle = (e: ToggleEvent) => {\n if (this.host.behaviorTrigger) {\n this.host.hidden = e.newState === 'closed';\n }\n\n if (e.newState === 'open' && this.host.closeTimeout) {\n this.#setCloseTimeout();\n }\n\n if (e.newState === 'closed') {\n this.#clearInterestTimeout();\n this.#clearCloseTimeout();\n }\n\n this.host.inert = this.host.matches(':not(:popover-open)');\n\n if (this.host.modal) {\n this.#toggleFocus(e.newState === 'open', e.target as HTMLElement);\n }\n\n this.host.dispatchEvent(\n new CustomEvent(e.newState === 'open' && e.oldState !== 'open' ? 'open' : 'close', {\n bubbles: true,\n composed: true,\n detail: { trigger: e.source }\n })\n );\n };\n\n #onCommand = (e: CommandEvent) => {\n if (e.command === 'toggle-popover') {\n this.host.togglePopover({ source: e.source as HTMLElement });\n }\n\n if (e.command === 'hide-popover') {\n this.host.hidePopover();\n this.#clearInterestTimeout();\n }\n\n if (e.command === 'show-popover') {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n };\n\n #onInterest = (e: InterestEvent) => {\n const isCustomElement = e.source?.localName.includes('-');\n if (isCustomElement) {\n const interestDelayStart = this.host.openDelay ?? this.#parseInterestDelay();\n if (interestDelayStart) {\n this.#interestTimeout = setTimeout(() => {\n if (this.host.isConnected) {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n }, interestDelayStart);\n } else {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n }\n };\n\n #onLoseInterest = (e: InterestEvent) => {\n const isCustomElement = e.source?.localName.includes('-');\n if (isCustomElement) {\n this.host.hidePopover();\n }\n\n this.#clearInterestTimeout();\n };\n\n #onPointerDown = (e: PointerEvent) => {\n if (this.host.modal && this.host.matches(':popover-open')) {\n this.#pointerdownWithinModal = clickOutsideElementBounds(e, this.host);\n }\n };\n\n #onPointerUp = (e: PointerEvent) => {\n if (\n this.#pointerdownWithinModal &&\n this.host.popoverDismissible &&\n this.host.modal &&\n this.host.matches(':popover-open') &&\n !hasOpenPopover(this.host) &&\n clickOutsideElementBounds(e, this.host)\n ) {\n this.host.hidePopover();\n }\n };\n\n #onHintMouseEnter = (e: MouseEvent) => {\n this.host.showPopover({ source: e.currentTarget as HTMLElement });\n };\n\n #onHintMouseLeave = () => {\n this.host.hidePopover();\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"type-native-popover.controller.js","names":["TypeNativePopoverController","#nativeTriggers","root","popoverTargetTriggers","commandForTriggers","interestForTriggers","host","showPopover","source","options","getHostAnchor","getHostTrigger","attachInternals","#updateLegacyTriggers","#setupLegacyTriggers","#setupModalLightDismiss","#onBeforeToggle","#onToggle","#onCommand","#onInterest","#onLoseInterest","#observers","observer","#onPointerDown","#onPointerUp","#removeHintTrigger","#clearInterestTimeout","#clearCloseTimeout","#closeTimeout","#interestTimeout","raw","value","#legacyHostTrigger","r","trigger","#previousLegacyTrigger","#clearLegacyTrigger","#hintTrigger","#setupHintTrigger","#setupPopoverTargetTrigger","#onHintMouseEnter","#onHintMouseLeave","generateId","open","focusElement","target","#setCloseTimeout","#toggleFocus","interestDelayStart","#parseInterestDelay","#pointerdownWithinModal","clickOutsideElementBounds","hasOpenPopover"],"sources":["../../../src/internal/controllers/type-native-popover.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport { clickOutsideElementBounds, generateId } from '../utils/dom.js';\nimport { attachInternals } from '@nvidia-elements/foundations/internal/a11y';\nimport { focusElement } from '../utils/focus.js';\nimport { getHostAnchor, getHostTrigger, hasOpenPopover } from './type-native-popover.utils.js';\nimport type { InterestEvent, PopoverType } from '../types/index.js';\n\nexport interface NativePopover extends ReactiveElement {\n anchor?: HTMLElement | string;\n closeTimeout?: number;\n popoverType?: PopoverType;\n modal?: boolean;\n popoverDismissible?: boolean;\n _internals?: ElementInternals;\n\n /** @deprecated */\n trigger?: HTMLElement | string;\n /** @deprecated */\n openDelay?: number;\n /** @deprecated */\n behaviorTrigger?: boolean;\n}\n\n/**\n * https://open-ui.org/components/popup.research.explainer\n */\nexport class TypeNativePopoverController<T extends NativePopover> implements ReactiveController {\n get #nativeTriggers(): HTMLElement[] {\n const root = this.host.getRootNode() as HTMLElement;\n const popoverTargetTriggers = Array.from(\n root.querySelectorAll(`[popovertarget=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n const commandForTriggers = Array.from(\n root.querySelectorAll(`[commandfor=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n const interestForTriggers = Array.from(\n root.querySelectorAll(`[interestfor=\"${CSS.escape ? CSS.escape(this.host.id) : this.host.id}\"]`)\n ) as HTMLElement[];\n\n return [...popoverTargetTriggers, ...commandForTriggers, ...interestForTriggers];\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n\n const showPopover = this.host.showPopover;\n this.host.showPopover = (options?: ShowPopoverOptions) => {\n if (this.host.isConnected) {\n // provide legacy fallback for source anchor or trigger if not provided, this can happen if the popover is dynamically created in the DOM without the use of the standard popover api or legacy trigger based api\n let source: HTMLElement | Element | null = options?.source ?? null;\n if (!source) {\n if (this.host.anchor) {\n source = getHostAnchor(this.host);\n } else if (this.host.trigger) {\n source = getHostTrigger(this.host, this.host.trigger);\n } else {\n source = globalThis.document.activeElement;\n }\n }\n\n showPopover.call(this.host, { source: source as HTMLElement });\n }\n };\n }\n\n async hostConnected() {\n attachInternals(this.host);\n this.host.popover = this.host.popoverType ?? null;\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n\n this.host.setAttribute('nve-popover', '');\n this.#updateLegacyTriggers();\n this.#setupLegacyTriggers(); // eslint-disable-line @typescript-eslint/no-floating-promises\n this.#setupModalLightDismiss();\n this.host.inert = this.host.matches(':not(:popover-open)') && !!this.#nativeTriggers.length;\n\n this.host.addEventListener('beforetoggle', this.#onBeforeToggle);\n this.host.addEventListener('toggle', this.#onToggle as EventListener);\n this.host.addEventListener('command', this.#onCommand as EventListener);\n this.host.addEventListener('interest', this.#onInterest as EventListener);\n this.host.addEventListener('loseinterest', this.#onLoseInterest as EventListener);\n }\n\n #interestTimeout: ReturnType<typeof setTimeout> | null = null;\n #closeTimeout: ReturnType<typeof setTimeout> | null = null;\n #observers: MutationObserver[] = [];\n #previousLegacyTrigger: HTMLButtonElement | null = null;\n #hintTrigger: HTMLButtonElement | null = null;\n\n async hostUpdated() {\n this.host.popover = this.host.popoverType ?? null;\n this.#updateLegacyTriggers();\n }\n\n hostDisconnected() {\n this.#observers.forEach(observer => observer.disconnect());\n this.#observers.length = 0;\n this.host.removeEventListener('beforetoggle', this.#onBeforeToggle);\n this.host.removeEventListener('toggle', this.#onToggle as EventListener);\n this.host.removeEventListener('command', this.#onCommand as EventListener);\n this.host.removeEventListener('interest', this.#onInterest as EventListener);\n this.host.removeEventListener('loseinterest', this.#onLoseInterest as EventListener);\n this.host.removeEventListener('pointerdown', this.#onPointerDown);\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.#removeHintTrigger();\n this.#clearInterestTimeout();\n this.#clearCloseTimeout();\n }\n\n #setCloseTimeout() {\n this.#clearCloseTimeout();\n if (this.host.closeTimeout) {\n this.#closeTimeout = setTimeout(() => this.host.hidePopover(), this.host.closeTimeout);\n }\n }\n\n #clearCloseTimeout() {\n if (this.#closeTimeout) {\n clearTimeout(this.#closeTimeout);\n this.#closeTimeout = null;\n }\n }\n\n #clearInterestTimeout() {\n if (this.#interestTimeout) {\n clearTimeout(this.#interestTimeout);\n this.#interestTimeout = null;\n }\n }\n\n #parseInterestDelay(): number {\n const style = getComputedStyle(this.host);\n const raw = (style as unknown as { interestDelayStart: string }).interestDelayStart;\n if (!raw) {\n return 0;\n }\n const value = parseFloat(raw);\n return raw.endsWith('ms') ? value : value * 1000;\n }\n\n #pointerdownWithinModal = false;\n\n #setupModalLightDismiss() {\n this.host.removeEventListener('pointerdown', this.#onPointerDown);\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.host.addEventListener('pointerdown', this.#onPointerDown);\n this.host.addEventListener('pointerup', this.#onPointerUp);\n }\n\n get #legacyHostTrigger(): HTMLElement | null {\n return this.host.trigger ? (getHostTrigger(this.host, this.host.trigger) as HTMLButtonElement) : null;\n }\n\n /**\n * @deprecated Legacy behavior that allows popovers to show as open by default when using the legacy trigger based api\n */\n async #setupLegacyTriggers() {\n await new Promise(r => requestAnimationFrame(r));\n\n // setup host hidden updates for legacy triggers\n const observer = new MutationObserver(() => {\n if (this.host.isConnected && !this.host.hidden && !this.host.matches(':popover-open')) {\n this.host.showPopover();\n }\n\n if (this.host.isConnected && this.host.hidden && this.host.matches(':popover-open')) {\n this.host.hidePopover();\n }\n });\n observer.observe(this.host, { attributes: true, attributeFilter: ['hidden'] });\n this.#observers.push(observer);\n\n // determine if popover is open by default\n if (\n this.host.isConnected &&\n !this.#nativeTriggers.length &&\n !this.host.hidden &&\n !this.host.matches(':popover-open')\n ) {\n this.host.popover = 'manual';\n this.host.showPopover();\n }\n }\n\n /**\n * @deprecated Legacy behavior that allows popovers to show as open by default when using the legacy trigger based api\n */\n #updateLegacyTriggers() {\n const trigger = this.#legacyHostTrigger as HTMLButtonElement;\n\n if (this.#previousLegacyTrigger && this.#previousLegacyTrigger !== trigger) {\n this.#clearLegacyTrigger(this.#previousLegacyTrigger);\n }\n\n if (this.#hintTrigger && this.#hintTrigger !== trigger) {\n this.#removeHintTrigger();\n }\n\n if (!trigger) {\n this.#previousLegacyTrigger = null;\n return;\n }\n\n if (this.host.popoverType === 'hint') {\n this.#setupHintTrigger(trigger);\n } else {\n this.#setupPopoverTargetTrigger(trigger);\n }\n this.#previousLegacyTrigger = trigger;\n }\n\n #setupHintTrigger(trigger: HTMLButtonElement) {\n if (this.#hintTrigger === trigger) return;\n\n trigger.addEventListener('mouseenter', this.#onHintMouseEnter);\n trigger.addEventListener('mouseleave', this.#onHintMouseLeave);\n trigger.addEventListener('focusout', this.#onHintMouseLeave);\n this.#hintTrigger = trigger;\n }\n\n #setupPopoverTargetTrigger(trigger: HTMLButtonElement) {\n this.#removeHintTrigger();\n this.host.id = this.host.id ? this.host.id : generateId();\n trigger.popoverTargetElement = this.host;\n trigger.setAttribute('popovertarget', this.host.id);\n }\n\n #toggleFocus(open: boolean, target: HTMLElement) {\n if (open) {\n // only focus popover if not the active element and not containing the active element already\n if ((this.host.getRootNode() as Document).activeElement !== this.host && !this.host.shadowRoot!.activeElement) {\n focusElement(this.host);\n }\n } else {\n focusElement(target);\n }\n }\n\n #clearLegacyTrigger(trigger: HTMLButtonElement) {\n trigger.popoverTargetElement = null;\n trigger.removeAttribute('popovertarget');\n if (this.#hintTrigger === trigger) {\n this.#removeHintTrigger();\n }\n }\n\n #removeHintTrigger() {\n this.#hintTrigger?.removeEventListener('mouseenter', this.#onHintMouseEnter);\n this.#hintTrigger?.removeEventListener('mouseleave', this.#onHintMouseLeave);\n this.#hintTrigger?.removeEventListener('focusout', this.#onHintMouseLeave);\n this.#hintTrigger = null;\n }\n\n #onBeforeToggle = (e: ToggleEvent) => {\n if (e.newState === 'open') {\n this.host._internals!.states.add('transition-start');\n }\n };\n\n #onToggle = (e: ToggleEvent) => {\n if (this.host.behaviorTrigger) {\n this.host.hidden = e.newState === 'closed';\n }\n\n if (e.newState === 'open' && this.host.closeTimeout) {\n this.#setCloseTimeout();\n }\n\n if (e.newState === 'closed') {\n this.#clearInterestTimeout();\n this.#clearCloseTimeout();\n }\n\n this.host.inert = this.host.matches(':not(:popover-open)');\n\n if (this.host.modal) {\n this.#toggleFocus(e.newState === 'open', e.target as HTMLElement);\n }\n\n this.host.dispatchEvent(\n new CustomEvent(e.newState === 'open' && e.oldState !== 'open' ? 'open' : 'close', {\n bubbles: true,\n composed: true,\n detail: { trigger: e.source }\n })\n );\n };\n\n #onCommand = (e: CommandEvent) => {\n if (e.command === 'toggle-popover') {\n this.host.togglePopover({ source: e.source as HTMLElement });\n }\n\n if (e.command === 'hide-popover') {\n this.host.hidePopover();\n this.#clearInterestTimeout();\n }\n\n if (e.command === 'show-popover') {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n };\n\n #onInterest = (e: InterestEvent) => {\n const isCustomElement = e.source?.localName.includes('-');\n if (isCustomElement) {\n const interestDelayStart = this.host.openDelay ?? this.#parseInterestDelay();\n if (interestDelayStart) {\n this.#interestTimeout = setTimeout(() => {\n if (this.host.isConnected) {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n }, interestDelayStart);\n } else {\n this.host.showPopover({ source: e.source as HTMLElement });\n }\n }\n };\n\n #onLoseInterest = (e: InterestEvent) => {\n const isCustomElement = e.source?.localName.includes('-');\n if (isCustomElement) {\n this.host.hidePopover();\n }\n\n this.#clearInterestTimeout();\n };\n\n #onPointerDown = (e: PointerEvent) => {\n if (this.host.modal && this.host.matches(':popover-open')) {\n this.#pointerdownWithinModal = clickOutsideElementBounds(e, this.host);\n }\n };\n\n #onPointerUp = (e: PointerEvent) => {\n if (\n this.#pointerdownWithinModal &&\n this.host.popoverDismissible &&\n this.host.modal &&\n this.host.matches(':popover-open') &&\n !hasOpenPopover(this.host) &&\n clickOutsideElementBounds(e, this.host)\n ) {\n this.host.hidePopover();\n }\n };\n\n #onHintMouseEnter = (e: MouseEvent) => {\n this.host.showPopover({ source: e.currentTarget as HTMLElement });\n };\n\n #onHintMouseLeave = () => {\n this.host.hidePopover();\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-popover.controller.examples.js","names":["type_popover_controller_examples_default"],"sources":["../../../src/internal/controllers/type-popover.controller.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { css, html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { query } from 'lit/decorators/query.js';\nimport type { PopoverPosition, PopoverAlign, PopoverType } from '@nvidia-elements/core/internal';\nimport { popoverStyles, TypeNativePopoverController
|
|
1
|
+
{"version":3,"file":"type-popover.controller.examples.js","names":["type_popover_controller_examples_default"],"sources":["../../../src/internal/controllers/type-popover.controller.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { css, html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { query } from 'lit/decorators/query.js';\nimport type { PopoverPosition, PopoverAlign, PopoverType } from '@nvidia-elements/core/internal';\nimport { popoverStyles, TypeNativePopoverController } from '@nvidia-elements/core/internal';\nimport { useStyles } from '@nvidia-elements/foundations/internal/styles';\nimport '@nvidia-elements/core/card/define.js';\nimport '@nvidia-elements/core/button/define.js';\nimport '@nvidia-elements/core/icon-button/define.js';\nimport '@nvidia-elements/core/dropdown/define.js';\n\nexport default {\n title: 'Internal/Controllers'\n}\n\nclass PopoverDemo extends LitElement {\n @property({ type: String }) anchor: string | HTMLElement;\n\n @property({ type: String }) trigger: string | HTMLElement;\n\n @property({ type: String, reflect: true }) position: PopoverPosition = 'top';\n\n @property({ type: String, reflect: true }) alignment: PopoverAlign = 'center';\n\n @property({ type: Boolean }) arrow = true;\n\n @query('.arrow') popoverArrow: HTMLElement;\n\n static styles = useStyles([popoverStyles, css`\n :host {\n --nve-sys-layer-popover-arrow-padding: 6px;\n --nve-sys-layer-popover-arrow-offset: 2px;\n --nve-sys-layer-popover-offset: 2px;\n }\n\n [internal-host] {\n padding: 18px;\n min-width: 80px;\n text-align: center;\n background: #fff;\n color: #2d2d2d;\n }\n\n :host::backdrop {\n background: none;\n }\n\n .arrow {\n width: 12px;\n height: 12px;\n background: #fff;\n position: absolute;\n }\n `]);\n\n /** @private */\n readonly popoverType: PopoverType = 'auto';\n\n protected typeNativePopoverController = new TypeNativePopoverController<PopoverDemo>(this);\n\n /** @private */\n declare _internals: ElementInternals;\n\n render() {\n return html`\n <div internal-host>\n <div id=\"content\">\n <slot></slot>\n </div>\n </div>\n ${this.arrow ? html`<div class=\"arrow\"></div>` : ''}\n `;\n }\n}\ncustomElements.get('ui-popover') || customElements.define('ui-popover', PopoverDemo);\n\n/**\n * @summary Basic popover toggled by a button using the native popovertarget API.\n * @tags test-case\n */\nexport const Default = {\n render: () => html`\n <style>\n #root-inner {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n width: 100%;\n height: 100vh;\n }\n </style>\n <ui-popover id=\"type-popover\">popover</ui-popover>\n <nve-button popovertarget=\"type-popover\">toggle</nve-button>\n `\n};\n\n/**\n * @summary Popover positioning and alignment options across all anchor and viewport placements.\n * @tags test-case\n */\nexport const Alignment = {\n render: () => html`\n <nve-card id=\"card\" style=\"width: 450px; height: 300px;\"></nve-card>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"top\" alignment=\"start\">top start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"top\">top center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"top\" alignment=\"end\">top end</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"right\" alignment=\"start\">right start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"right\">right center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"right\" alignment=\"end\">right end</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"bottom\" alignment=\"start\">bottom start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"bottom\">bottom center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"bottom\" alignment=\"end\">bottom end</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"left\" alignment=\"start\">left start</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"left\">left center</ui-popover>\n <ui-popover anchor=\"card\" popover-type=\"manual\" position=\"left\" alignment=\"end\">left end</ui-popover>\n\n <ui-popover popover-type=\"manual\" position=\"center\">center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"top\" alignment=\"start\">top start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"top\">top center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"top\" alignment=\"end\">top end</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"right\" alignment=\"start\">right start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"right\">right center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"right\" alignment=\"end\">right end</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"bottom\" alignment=\"start\">bottom start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"bottom\">bottom center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"bottom\" alignment=\"end\">bottom end</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"left\" alignment=\"start\">left start</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"left\">left center</ui-popover>\n <ui-popover popover-type=\"manual\" position=\"left\" alignment=\"end\">left end</ui-popover>\n `\n}\n\nclass MyElement extends LitElement {\n render() {\n return html`\n <div style=\"width: 250px; height: 100px; resize: both; overflow: scroll; border: 1px solid white;\">\n <nve-dropdown id=\"my-dropdown\">dropdown content</nve-dropdown>\n <nve-icon-button id=\"my-dropdown-anchor\" popovertarget=\"my-dropdown\" icon-name=\"refresh\"></nve-icon-button>\n </div>\n `;\n }\n}\n\ncustomElements.get('my-element') || customElements.define('my-element', MyElement);"],"mappings":";AAGA,IAAAA,IAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-selectable.controller.js","names":["TypeSelectableController","host","attachInternals","#commandTriggered"],"sources":["../../../src/internal/controllers/type-selectable.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport { attachInternals } from '
|
|
1
|
+
{"version":3,"file":"type-selectable.controller.js","names":["TypeSelectableController","host","attachInternals","#commandTriggered"],"sources":["../../../src/internal/controllers/type-selectable.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport { attachInternals } from '@nvidia-elements/foundations/internal/a11y';\n\nexport type TypeSelectable = ReactiveElement & {\n selected?: boolean;\n behaviorSelect?: boolean;\n selectable?: 'single' | 'multi';\n _internals?: ElementInternals;\n};\n\n/**\n * Controller for enabling selectable behavior for elements.\n * @event select - Dispatched when the selectable element selects.\n * @property selected - selected state\n * @property behaviorSelect - determines if stateful auto behavior should enable\n */\nexport class TypeSelectableController<T extends TypeSelectable> implements ReactiveController {\n #commandTriggered = false;\n constructor(private host: T) {\n this.host.addController(this);\n }\n\n hostConnected() {\n attachInternals(this.host);\n\n this.host.addEventListener('command', ((e: CommandEvent) => {\n this.#commandTriggered = true;\n if (e.command === '--toggle-select') {\n this.toggle();\n }\n\n if (e.command === '--select') {\n this.select();\n }\n\n if (e.command === '--deselect') {\n this.host.selected = false;\n }\n this.#commandTriggered = false;\n }) as EventListener);\n }\n\n hostUpdated() {\n this.host.selectable === 'single'\n ? this.host._internals!.states.add('selectable-single')\n : this.host._internals!.states.delete('selectable-single');\n this.host.selectable === 'multi'\n ? this.host._internals!.states.add('selectable-multi')\n : this.host._internals!.states.delete('selectable-multi');\n }\n\n select() {\n if (this.host.behaviorSelect || this.#commandTriggered) {\n this.host.selected = true;\n }\n\n this.host.dispatchEvent(new CustomEvent('select', { bubbles: true, composed: true, detail: this.host }));\n }\n\n deselect() {\n if (this.host.behaviorSelect || this.#commandTriggered) {\n this.host.selected = false;\n }\n\n this.host.dispatchEvent(new CustomEvent('select', { bubbles: true, composed: true, detail: this.host }));\n }\n\n toggle() {\n if (this.host.selected) {\n this.deselect();\n } else {\n this.select();\n }\n }\n}\n"],"mappings":";;AAmBA,IAAaA,IAAb,MAA8F;CAC5F,KAAoB;CACpB,YAAY,GAAiB;EAC3B,AADkB,KAAA,OAAAC,GAClB,KAAK,KAAK,cAAc,IAAI;CAC9B;CAEA,gBAAgB;EAGd,AAFAC,EAAgB,KAAK,IAAI,GAEzB,KAAK,KAAK,iBAAiB,aAAa,MAAoB;GAa1D,AAZA,KAAKC,KAAoB,IACrB,EAAE,YAAY,qBAChB,KAAK,OAAO,GAGV,EAAE,YAAY,cAChB,KAAK,OAAO,GAGV,EAAE,YAAY,iBAChB,KAAK,KAAK,WAAW,KAEvB,KAAKA,KAAoB;EAC3B,EAAmB;CACrB;CAEA,cAAc;EAIZ,AAHA,KAAK,KAAK,eAAe,WACrB,KAAK,KAAK,WAAY,OAAO,IAAI,mBAAmB,IACpD,KAAK,KAAK,WAAY,OAAO,OAAO,mBAAmB,GAC3D,KAAK,KAAK,eAAe,UACrB,KAAK,KAAK,WAAY,OAAO,IAAI,kBAAkB,IACnD,KAAK,KAAK,WAAY,OAAO,OAAO,kBAAkB;CAC5D;CAEA,SAAS;EAKP,CAJI,KAAK,KAAK,kBAAkB,KAAKA,QACnC,KAAK,KAAK,WAAW,KAGvB,KAAK,KAAK,cAAc,IAAI,YAAY,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,QAAQ,KAAK;EAAK,CAAC,CAAC;CACzG;CAEA,WAAW;EAKT,CAJI,KAAK,KAAK,kBAAkB,KAAKA,QACnC,KAAK,KAAK,WAAW,KAGvB,KAAK,KAAK,cAAc,IAAI,YAAY,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,QAAQ,KAAK;EAAK,CAAC,CAAC;CACzG;CAEA,SAAS;EACP,AAAI,KAAK,KAAK,WACZ,KAAK,SAAS,IAEd,KAAK,OAAO;CAEhB;AACF"}
|
package/dist/internal/index.d.ts
CHANGED
|
@@ -18,7 +18,6 @@ export * from './controllers/type-selectable.controller.js';
|
|
|
18
18
|
export * from './controllers/type-native-popover.controller.js';
|
|
19
19
|
export * from './controllers/type-ssr.controller.js';
|
|
20
20
|
export * from './decorators/host-attr.js';
|
|
21
|
-
export * from './decorators/scoped-registry.js';
|
|
22
21
|
export * from './styles/index.js';
|
|
23
22
|
export * from './styles/popover.js';
|
|
24
23
|
export * from '@nvidia-elements/foundations/internal/i18n';
|
package/dist/internal/index.js
CHANGED
|
@@ -11,29 +11,28 @@ import { KeynavCode as x, appendAnchorName as S, appendRootNodeStyle as C, apply
|
|
|
11
11
|
import { KeyNavigationGridController as Q, getNextKeyGridItem as $, keyNavigationGrid as ie } from "./controllers/keynav-grid.controller.js";
|
|
12
12
|
import { KeyNavigationListController as ae, getNextKeyListItem as oe, keyNavigationList as se } from "./controllers/keynav-list.controller.js";
|
|
13
13
|
import { KeyNavigationSpatialController as ce } from "./controllers/keynav-spatial.controller.js";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import { finiteOr as Ue, nonnegativeFiniteOr as We, positiveFiniteOr as Ge } from "./utils/numeric.js";
|
|
14
|
+
import { StateExpandedController as le, stateExpanded as ue } from "./controllers/state-expanded.controller.js";
|
|
15
|
+
import { StateHighlightedController as de, stateHighlighted as fe } from "./controllers/state-highlighted.controller.js";
|
|
16
|
+
import { StateScrollController as pe, stateScroll as me } from "./controllers/state-scroll.controller.js";
|
|
17
|
+
import { StateSelectedController as he, stateSelected as ge } from "./controllers/state-selected.controller.js";
|
|
18
|
+
import { TypeAnchorController as _e, typeAnchor as ve } from "./controllers/type-anchor.controller.js";
|
|
19
|
+
import { TypeClosableController as ye } from "./controllers/type-closable.controller.js";
|
|
20
|
+
import { TypeExpandableController as be } from "./controllers/type-expandable.controller.js";
|
|
21
|
+
import { TypeSelectableController as xe } from "./controllers/type-selectable.controller.js";
|
|
22
|
+
import { TypeNativePopoverController as Se } from "./controllers/type-native-popover.controller.js";
|
|
23
|
+
import { TypeSSRController as Ce, typeSSR as we } from "./controllers/type-ssr.controller.js";
|
|
24
|
+
import { hostAttr as Te } from "./decorators/host-attr.js";
|
|
25
|
+
import { colorStateStyles as Ee, statusStateStyles as De, supportStateStyles as Oe } from "./styles/index.js";
|
|
26
|
+
import { popoverStyles as ke } from "./styles/popover2.js";
|
|
27
|
+
import { TransitionService as Ae } from "./services/transition.service.js";
|
|
28
|
+
import { statusIcons as je } from "./types/index.js";
|
|
29
|
+
import { associateAriaDescribedBy as Me, associateAriaLabel as Ne, associateControlGroup as Pe, associateDataList as Fe, associateLabel as Ie } from "./utils/a11y.js";
|
|
30
|
+
import { formatStandardNumber as Le, parseVersion as Re } from "./utils/objects.js";
|
|
31
|
+
import { createLightDismiss as ze } from "./utils/keynav.js";
|
|
32
|
+
import { finiteOr as Be, nonnegativeFiniteOr as Ve, positiveFiniteOr as He } from "./utils/numeric.js";
|
|
34
33
|
export * from "@nvidia-elements/foundations/internal/i18n";
|
|
35
34
|
// src/internal/index.ts
|
|
36
|
-
var
|
|
35
|
+
var Ue = /* @__PURE__ */ ee({
|
|
37
36
|
AuditController: () => a,
|
|
38
37
|
DOCS_URL: () => n,
|
|
39
38
|
GestureController: () => s,
|
|
@@ -43,40 +42,39 @@ var Ke = /* @__PURE__ */ ee({
|
|
|
43
42
|
KeyStateController: () => c,
|
|
44
43
|
KeynavCode: () => x,
|
|
45
44
|
LogService: () => e,
|
|
46
|
-
StateExpandedController: () =>
|
|
47
|
-
StateHighlightedController: () =>
|
|
48
|
-
StateScrollController: () =>
|
|
49
|
-
StateSelectedController: () =>
|
|
50
|
-
TransitionService: () =>
|
|
51
|
-
TypeAnchorController: () =>
|
|
52
|
-
TypeClosableController: () =>
|
|
53
|
-
TypeExpandableController: () =>
|
|
54
|
-
TypeNativePopoverController: () =>
|
|
55
|
-
TypeSSRController: () =>
|
|
56
|
-
TypeSelectableController: () =>
|
|
45
|
+
StateExpandedController: () => le,
|
|
46
|
+
StateHighlightedController: () => de,
|
|
47
|
+
StateScrollController: () => pe,
|
|
48
|
+
StateSelectedController: () => he,
|
|
49
|
+
TransitionService: () => Ae,
|
|
50
|
+
TypeAnchorController: () => _e,
|
|
51
|
+
TypeClosableController: () => ye,
|
|
52
|
+
TypeExpandableController: () => be,
|
|
53
|
+
TypeNativePopoverController: () => Se,
|
|
54
|
+
TypeSSRController: () => Ce,
|
|
55
|
+
TypeSelectableController: () => xe,
|
|
57
56
|
appendAnchorName: () => S,
|
|
58
57
|
appendRootNodeStyle: () => C,
|
|
59
58
|
applySlotContentStates: () => w,
|
|
60
|
-
associateAriaDescribedBy: () =>
|
|
61
|
-
associateAriaLabel: () =>
|
|
62
|
-
associateControlGroup: () =>
|
|
63
|
-
associateDataList: () =>
|
|
64
|
-
associateLabel: () =>
|
|
65
|
-
attachInternals: () => me,
|
|
59
|
+
associateAriaDescribedBy: () => Me,
|
|
60
|
+
associateAriaLabel: () => Ne,
|
|
61
|
+
associateControlGroup: () => Pe,
|
|
62
|
+
associateDataList: () => Fe,
|
|
63
|
+
associateLabel: () => Ie,
|
|
66
64
|
audit: () => o,
|
|
67
65
|
auditParentElement: () => t,
|
|
68
66
|
clickOutsideElementBounds: () => T,
|
|
69
|
-
colorStateStyles: () =>
|
|
67
|
+
colorStateStyles: () => Ee,
|
|
70
68
|
createGhostElement: () => E,
|
|
71
|
-
createLightDismiss: () =>
|
|
69
|
+
createLightDismiss: () => ze,
|
|
72
70
|
debounce: () => l,
|
|
73
71
|
endOfScrollBox: () => D,
|
|
74
72
|
excessiveInstanceLimit: () => 50,
|
|
75
|
-
finiteOr: () =>
|
|
73
|
+
finiteOr: () => Be,
|
|
76
74
|
focusElement: () => f,
|
|
77
75
|
focusElementTimeout: () => p,
|
|
78
76
|
formatFileSize: () => r,
|
|
79
|
-
formatStandardNumber: () =>
|
|
77
|
+
formatStandardNumber: () => Le,
|
|
80
78
|
generateId: () => O,
|
|
81
79
|
getActiveElement: () => m,
|
|
82
80
|
getAnchorNames: () => k,
|
|
@@ -94,7 +92,7 @@ var Ke = /* @__PURE__ */ ee({
|
|
|
94
92
|
getThemeTokens: () => z,
|
|
95
93
|
hasHorizontalScrollBar: () => B,
|
|
96
94
|
hasInvalidDOMGrid: () => V,
|
|
97
|
-
hostAttr: () =>
|
|
95
|
+
hostAttr: () => Te,
|
|
98
96
|
initializeKeyListItems: () => h,
|
|
99
97
|
isContextMenuClick: () => H,
|
|
100
98
|
isFocusable: () => g,
|
|
@@ -103,38 +101,36 @@ var Ke = /* @__PURE__ */ ee({
|
|
|
103
101
|
keyNavigationGrid: () => ie,
|
|
104
102
|
keyNavigationList: () => se,
|
|
105
103
|
matchesElementName: () => U,
|
|
106
|
-
nonnegativeFiniteOr: () =>
|
|
104
|
+
nonnegativeFiniteOr: () => Ve,
|
|
107
105
|
onChildListMutation: () => u,
|
|
108
106
|
onListboxActivate: () => y,
|
|
109
107
|
openEyeDropper: () => W,
|
|
110
|
-
parseVersion: () =>
|
|
111
|
-
popoverStyles: () =>
|
|
112
|
-
positiveFiniteOr: () =>
|
|
108
|
+
parseVersion: () => Re,
|
|
109
|
+
popoverStyles: () => ke,
|
|
110
|
+
positiveFiniteOr: () => He,
|
|
113
111
|
removeAnchorName: () => G,
|
|
114
112
|
removeEmptySlotWhitespace: () => K,
|
|
115
113
|
removeEmptyTextNode: () => q,
|
|
116
114
|
sameOrderedStringArray: () => J,
|
|
117
|
-
scopedRegistry: () => Me,
|
|
118
115
|
setActiveKeyListItem: () => b,
|
|
119
116
|
shiftLeft: () => i,
|
|
120
117
|
slotContainsOnlyWhitespace: () => Y,
|
|
121
|
-
stateExpanded: () =>
|
|
122
|
-
stateHighlighted: () =>
|
|
123
|
-
stateScroll: () =>
|
|
124
|
-
stateSelected: () =>
|
|
125
|
-
statusIcons: () =>
|
|
126
|
-
statusStateStyles: () =>
|
|
118
|
+
stateExpanded: () => ue,
|
|
119
|
+
stateHighlighted: () => fe,
|
|
120
|
+
stateScroll: () => me,
|
|
121
|
+
stateSelected: () => ge,
|
|
122
|
+
statusIcons: () => je,
|
|
123
|
+
statusStateStyles: () => De,
|
|
127
124
|
styleSheetToString: () => re,
|
|
128
|
-
supportStateStyles: () =>
|
|
125
|
+
supportStateStyles: () => Oe,
|
|
129
126
|
throttle: () => d,
|
|
130
|
-
typeAnchor: () =>
|
|
131
|
-
typeSSR: () =>
|
|
127
|
+
typeAnchor: () => ve,
|
|
128
|
+
typeSSR: () => we,
|
|
132
129
|
uniqueNonEmptyStrings: () => X,
|
|
133
|
-
useStyles: () => Ie,
|
|
134
130
|
validKeyNavigationCode: () => Z
|
|
135
131
|
});
|
|
136
|
-
import * as
|
|
137
|
-
te(
|
|
138
|
-
export { a as AuditController, n as DOCS_URL, s as GestureController, Q as KeyNavigationGridController, ae as KeyNavigationListController, ce as KeyNavigationSpatialController, c as KeyStateController, x as KeynavCode, e as LogService,
|
|
132
|
+
import * as We from "@nvidia-elements/foundations/internal/i18n";
|
|
133
|
+
te(Ue, We);
|
|
134
|
+
export { a as AuditController, n as DOCS_URL, s as GestureController, Q as KeyNavigationGridController, ae as KeyNavigationListController, ce as KeyNavigationSpatialController, c as KeyStateController, x as KeynavCode, e as LogService, le as StateExpandedController, de as StateHighlightedController, pe as StateScrollController, he as StateSelectedController, Ae as TransitionService, _e as TypeAnchorController, ye as TypeClosableController, be as TypeExpandableController, Se as TypeNativePopoverController, Ce as TypeSSRController, xe as TypeSelectableController, S as appendAnchorName, C as appendRootNodeStyle, w as applySlotContentStates, Me as associateAriaDescribedBy, Ne as associateAriaLabel, Pe as associateControlGroup, Fe as associateDataList, Ie as associateLabel, o as audit, t as auditParentElement, T as clickOutsideElementBounds, Ee as colorStateStyles, E as createGhostElement, ze as createLightDismiss, l as debounce, D as endOfScrollBox, ne as excessiveInstanceLimit, Be as finiteOr, f as focusElement, p as focusElementTimeout, r as formatFileSize, Le as formatStandardNumber, O as generateId, m as getActiveElement, k as getAnchorNames, A as getAttributeChanges, j as getAttributeListChanges, M as getChildren, N as getCustomElementRegistry, P as getDisplayValue, F as getElementUpdate, I as getFlattenedDOMTree, L as getFlattenedFocusableItems, $ as getNextKeyGridItem, oe as getNextKeyListItem, R as getPropertyChanges, z as getThemeTokens, B as hasHorizontalScrollBar, V as hasInvalidDOMGrid, Te as hostAttr, h as initializeKeyListItems, Ue as internal_exports, H as isContextMenuClick, g as isFocusable, _ as isImmediateRootActiveElement, v as isSimpleFocusable, ie as keyNavigationGrid, se as keyNavigationList, U as matchesElementName, Ve as nonnegativeFiniteOr, u as onChildListMutation, y as onListboxActivate, W as openEyeDropper, Re as parseVersion, ke as popoverStyles, He as positiveFiniteOr, G as removeAnchorName, K as removeEmptySlotWhitespace, q as removeEmptyTextNode, J as sameOrderedStringArray, b as setActiveKeyListItem, i as shiftLeft, Y as slotContainsOnlyWhitespace, ue as stateExpanded, fe as stateHighlighted, me as stateScroll, ge as stateSelected, je as statusIcons, De as statusStateStyles, re as styleSheetToString, Oe as supportStateStyles, d as throttle, ve as typeAnchor, we as typeSSR, X as uniqueNonEmptyStrings, Z as validKeyNavigationCode };
|
|
139
135
|
|
|
140
136
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["internal_exports","AuditController","DOCS_URL","GestureController","KeyNavigationGridController","KeyNavigationListController","KeyNavigationSpatialController","KeyStateController","KeynavCode","LogService","StateExpandedController","StateHighlightedController","StateScrollController","StateSelectedController","TransitionService","TypeAnchorController","TypeClosableController","TypeExpandableController","TypeNativePopoverController","TypeSSRController","TypeSelectableController","appendAnchorName","appendRootNodeStyle","applySlotContentStates","associateAriaDescribedBy","associateAriaLabel","associateControlGroup","associateDataList","associateLabel","
|
|
1
|
+
{"version":3,"file":"index.js","names":["internal_exports","AuditController","DOCS_URL","GestureController","KeyNavigationGridController","KeyNavigationListController","KeyNavigationSpatialController","KeyStateController","KeynavCode","LogService","StateExpandedController","StateHighlightedController","StateScrollController","StateSelectedController","TransitionService","TypeAnchorController","TypeClosableController","TypeExpandableController","TypeNativePopoverController","TypeSSRController","TypeSelectableController","appendAnchorName","appendRootNodeStyle","applySlotContentStates","associateAriaDescribedBy","associateAriaLabel","associateControlGroup","associateDataList","associateLabel","audit","auditParentElement","clickOutsideElementBounds","colorStateStyles","createGhostElement","createLightDismiss","debounce","endOfScrollBox","finiteOr","focusElement","focusElementTimeout","formatFileSize","formatStandardNumber","generateId","getActiveElement","getAnchorNames","getAttributeChanges","getAttributeListChanges","getChildren","getCustomElementRegistry","getDisplayValue","getElementUpdate","getFlattenedDOMTree","getFlattenedFocusableItems","getNextKeyGridItem","getNextKeyListItem","getPropertyChanges","getThemeTokens","hasHorizontalScrollBar","hasInvalidDOMGrid","hostAttr","initializeKeyListItems","isContextMenuClick","isFocusable","isImmediateRootActiveElement","isSimpleFocusable","keyNavigationGrid","keyNavigationList","matchesElementName","nonnegativeFiniteOr","onChildListMutation","onListboxActivate","openEyeDropper","parseVersion","popoverStyles","positiveFiniteOr","removeAnchorName","removeEmptySlotWhitespace","removeEmptyTextNode","sameOrderedStringArray","setActiveKeyListItem","shiftLeft","slotContainsOnlyWhitespace","stateExpanded","stateHighlighted","stateScroll","stateSelected","statusIcons","statusStateStyles","styleSheetToString","supportStateStyles","throttle","typeAnchor","typeSSR","uniqueNonEmptyStrings","validKeyNavigationCode","import__nvidia_elements_foundations_internal_i18n","__reExport","excessiveInstanceLimit"],"sources":["../../src/internal/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @internal private common utilities for Elements\n */\nexport * from './controllers/audit.controller.js';\nexport * from './controllers/gesture.controller.js';\nexport * from './controllers/key-state.controller.js';\nexport * from './controllers/keynav-grid.controller.js';\nexport * from './controllers/keynav-list.controller.js';\nexport * from './controllers/keynav-spatial.controller.js';\nexport * from './controllers/state-expanded.controller.js';\nexport * from './controllers/state-highlighted.controller.js';\nexport * from './controllers/state-scroll.controller.js';\nexport * from './controllers/state-selected.controller.js';\nexport * from './controllers/type-anchor.controller.js';\nexport * from './controllers/type-closable.controller.js';\nexport * from './controllers/type-expandable.controller.js';\nexport * from './controllers/type-selectable.controller.js';\nexport * from './controllers/type-native-popover.controller.js';\nexport * from './controllers/type-ssr.controller.js';\nexport * from './decorators/host-attr.js';\nexport * from './styles/index.js';\nexport * from './styles/popover.js';\nexport * from '@nvidia-elements/foundations/internal/i18n';\nexport * from './services/log.service.js';\nexport * from './services/transition.service.js';\nexport * from './types/index.js';\nexport * from './utils/a11y.js';\nexport * from './utils/audit.js';\nexport * from './utils/dom.js';\nexport * from './utils/events.js';\nexport * from './utils/objects.js';\nexport * from './utils/strings.js';\nexport * from './utils/focus.js';\nexport * from './utils/keynav.js';\nexport * from './utils/numeric.js';\n"],"mappings":""}
|
|
@@ -1,18 +1,8 @@
|
|
|
1
|
-
import e from "./
|
|
2
|
-
import t from "./
|
|
3
|
-
import n from "./
|
|
4
|
-
import r from "./status.state.js";
|
|
5
|
-
import i from "./support.state.js";
|
|
6
|
-
import { unsafeCSS as a } from "lit";
|
|
1
|
+
import e from "./color.state.js";
|
|
2
|
+
import t from "./status.state.js";
|
|
3
|
+
import n from "./support.state.js";
|
|
7
4
|
// src/internal/styles/index.ts
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
return [
|
|
11
|
-
a(e),
|
|
12
|
-
a(t),
|
|
13
|
-
...n.map((e) => a(e))
|
|
14
|
-
];
|
|
15
|
-
}
|
|
16
|
-
export { o as colorStateStyles, s as statusStateStyles, c as supportStateStyles, l as useStyles };
|
|
5
|
+
var r = e, i = t, a = n;
|
|
6
|
+
export { r as colorStateStyles, i as statusStateStyles, a as supportStateStyles };
|
|
17
7
|
|
|
18
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_colorStateStyles","_statusStateStyles","_supportStateStyles","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_colorStateStyles","_statusStateStyles","_supportStateStyles","color_state_default","status_state_default","support_state_default","colorStateStyles","statusStateStyles","supportStateStyles"],"sources":["../../../src/internal/styles/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport _colorStateStyles from './color.state.css?inline';\nimport _statusStateStyles from './status.state.css?inline';\nimport _supportStateStyles from './support.state.css?inline';\n\nexport const colorStateStyles = _colorStateStyles;\n\nexport const statusStateStyles = _statusStateStyles;\n\nexport const supportStateStyles = _supportStateStyles;\n"],"mappings":";;;;AAOA,IAAaM,IAAmBN,GAEnBO,IAAoBN,GAEpBO,IAAqBN"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
export declare function attachInternals(element: HTMLElement & {
|
|
2
|
-
_internals?: ElementInternals;
|
|
3
|
-
}): void;
|
|
4
1
|
export declare function associateLabel(label: HTMLLabelElement, input: HTMLInputElement): void;
|
|
5
2
|
export declare function associateAriaLabel(label: HTMLElement, element: HTMLElement): void;
|
|
6
3
|
export declare function associateAriaDescribedBy(messages: HTMLElement[], element: HTMLElement): void;
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
import { generateId as e } from "./dom.js";
|
|
2
2
|
// src/internal/utils/a11y.ts
|
|
3
|
-
function t(
|
|
4
|
-
e._internals === void 0 && (e._internals = e.attachInternals());
|
|
5
|
-
}
|
|
6
|
-
function n(t, n) {
|
|
3
|
+
function t(t, n) {
|
|
7
4
|
t && n && (n.id = n.id ? n.id : e(), t.htmlFor = n.id);
|
|
8
5
|
}
|
|
9
|
-
function
|
|
6
|
+
function n(t, n) {
|
|
10
7
|
t && n && (t.id = t.id ? t.id : e(), n.setAttribute("aria-labelledby", t.id));
|
|
11
8
|
}
|
|
12
|
-
function
|
|
9
|
+
function r(t, n) {
|
|
13
10
|
if (t.length && n) {
|
|
14
11
|
let r = t.map((t) => t.id = e()).join(" ");
|
|
15
12
|
n.setAttribute("aria-describedby", r);
|
|
16
13
|
}
|
|
17
14
|
}
|
|
18
|
-
function
|
|
15
|
+
function i(t, n) {
|
|
19
16
|
t && (t.id = t.id?.length ? t.id : e(), n.setAttribute("list", t.id));
|
|
20
17
|
}
|
|
21
|
-
function
|
|
18
|
+
function a(t) {
|
|
22
19
|
if (!t.find((e) => e?.name?.length)) {
|
|
23
20
|
let n = e();
|
|
24
21
|
t.forEach((e) => e.name = n);
|
|
25
22
|
}
|
|
26
23
|
}
|
|
27
|
-
export {
|
|
24
|
+
export { r as associateAriaDescribedBy, n as associateAriaLabel, a as associateControlGroup, i as associateDataList, t as associateLabel };
|
|
28
25
|
|
|
29
26
|
//# sourceMappingURL=a11y.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y.js","names":["
|
|
1
|
+
{"version":3,"file":"a11y.js","names":["associateLabel","label","input","generateId","associateAriaLabel","element","associateAriaDescribedBy","messages","ids","associateDataList","datalist","associateControlGroup","elements","name"],"sources":["../../../src/internal/utils/a11y.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { generateId } from './dom.js';\n\nexport function associateLabel(label: HTMLLabelElement, input: HTMLInputElement) {\n if (label && input) {\n input.id = input.id ? input.id : generateId();\n label.htmlFor = input.id;\n }\n}\n\nexport function associateAriaLabel(label: HTMLElement, element: HTMLElement) {\n if (label && element) {\n label.id = label.id ? label.id : generateId();\n element.setAttribute('aria-labelledby', label.id);\n }\n}\n\nexport function associateAriaDescribedBy(messages: HTMLElement[], element: HTMLElement) {\n if (messages.length && element) {\n const ids = messages.map(m => (m.id = generateId())).join(' ');\n element.setAttribute('aria-describedby', ids);\n }\n}\n\nexport function associateDataList(datalist: HTMLDataListElement, element: HTMLInputElement) {\n if (datalist) {\n datalist.id = datalist.id?.length ? datalist.id : generateId();\n element.setAttribute('list', datalist.id);\n }\n}\n\nexport function associateControlGroup(elements: HTMLInputElement[]) {\n if (!elements.find(e => e?.name?.length)) {\n const name = generateId();\n elements.forEach(e => (e.name = name));\n }\n}\n"],"mappings":";;AAKA,SAAgBA,EAAe,GAAyB,GAAyB;CAC/E,AAAIC,KAASC,MACX,EAAM,KAAKA,EAAM,KAAKA,EAAM,KAAKC,EAAW,GAC5C,EAAM,UAAUD,EAAM;AAE1B;AAEA,SAAgBE,EAAmB,GAAoB,GAAsB;CAC3E,AAAIH,KAASI,MACX,EAAM,KAAKJ,EAAM,KAAKA,EAAM,KAAKE,EAAW,GAC5CE,EAAQ,aAAa,mBAAmBJ,EAAM,EAAE;AAEpD;AAEA,SAAgBK,EAAyB,GAAyB,GAAsB;CACtF,IAAIC,EAAS,UAAUF,GAAS;EAC9B,IAAMG,IAAMD,EAAS,KAAI,MAAM,EAAE,KAAKJ,EAAW,CAAE,CAAC,CAAC,KAAK,GAAG;EAC7D,EAAQ,aAAa,oBAAoBK,CAAG;CAC9C;AACF;AAEA,SAAgBC,EAAkB,GAA+B,GAA2B;CAC1F,AAAIC,MACF,EAAS,KAAKA,EAAS,IAAI,SAASA,EAAS,KAAKP,EAAW,GAC7DE,EAAQ,aAAa,QAAQK,EAAS,EAAE;AAE5C;AAEA,SAAgBC,EAAsB,GAA8B;CAClE,IAAI,CAACC,EAAS,MAAK,MAAK,GAAG,MAAM,MAAM,GAAG;EACxC,IAAMC,IAAOV,EAAW;EACxB,EAAS,SAAQ,MAAM,EAAE,OAAOU,CAAK;CACvC;AACF"}
|