@nvidia-elements/core 2.23.4 → 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 +10 -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/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/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/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,28 +1,28 @@
|
|
|
1
1
|
import { focusElementTimeout as e } from "../internal/utils/focus.js";
|
|
2
2
|
import { getDisplayValue as t, getElementUpdate as n, getPropertyChanges as r } from "../internal/utils/dom.js";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import s from "../
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
3
|
+
import { createLightDismiss as i } from "../internal/utils/keynav.js";
|
|
4
|
+
import a from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
|
|
5
|
+
import { Icon as o } from "../icon/icon2.js";
|
|
6
|
+
import { Control as s } from "../forms/control/control2.js";
|
|
7
|
+
import { inputStyles as c } from "../input/input2.js";
|
|
8
|
+
import { Checkbox as l } from "../checkbox/checkbox2.js";
|
|
9
|
+
import { Tag as u } from "../tag/tag2.js";
|
|
10
|
+
import { Dropdown as d } from "../dropdown/dropdown2.js";
|
|
11
|
+
import { Menu as f } from "../menu/menu2.js";
|
|
12
|
+
import { MenuItem as p } from "../menu/menu-item2.js";
|
|
13
|
+
import m from "./combobox.js";
|
|
14
|
+
import { html as h, isServer as g, nothing as _ } from "lit";
|
|
15
|
+
import { property as v } from "lit/decorators/property.js";
|
|
16
|
+
import { ifDefined as y } from "lit/directives/if-defined.js";
|
|
17
|
+
import { scopedRegistry as b } from "@nvidia-elements/foundations/internal/decorators";
|
|
18
|
+
import { useStyles as x } from "@nvidia-elements/foundations/internal/styles";
|
|
19
19
|
// src/combobox/combobox.ts
|
|
20
20
|
var S = {
|
|
21
21
|
select: "select",
|
|
22
22
|
selected: "selected",
|
|
23
23
|
noResults: "no results",
|
|
24
24
|
create: "create"
|
|
25
|
-
}, C = class extends
|
|
25
|
+
}, C = class extends s {
|
|
26
26
|
constructor(...e) {
|
|
27
27
|
super(...e), this.#p = [], this.#m = !1, this.#_ = null, this._associateDatalist = !1, this.#D = /* @__PURE__ */ new Map();
|
|
28
28
|
}
|
|
@@ -30,26 +30,26 @@ var S = {
|
|
|
30
30
|
return S;
|
|
31
31
|
}
|
|
32
32
|
static {
|
|
33
|
-
this.styles =
|
|
34
|
-
...
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
this.styles = x([
|
|
34
|
+
...s.styles,
|
|
35
|
+
c,
|
|
36
|
+
m
|
|
37
37
|
]);
|
|
38
38
|
}
|
|
39
39
|
static {
|
|
40
40
|
this.metadata = {
|
|
41
41
|
tag: "nve-combobox",
|
|
42
|
-
version: "2.23.
|
|
42
|
+
version: "2.23.5"
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
static {
|
|
46
46
|
this.elementDefinitions = {
|
|
47
|
+
[l.metadata.tag]: l,
|
|
48
|
+
[o.metadata.tag]: o,
|
|
47
49
|
[d.metadata.tag]: d,
|
|
48
|
-
[
|
|
50
|
+
[f.metadata.tag]: f,
|
|
49
51
|
[p.metadata.tag]: p,
|
|
50
|
-
[
|
|
51
|
-
[h.metadata.tag]: h,
|
|
52
|
-
[f.metadata.tag]: f
|
|
52
|
+
[u.metadata.tag]: u
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
55
|
#e;
|
|
@@ -64,10 +64,10 @@ var S = {
|
|
|
64
64
|
return Array.from(this.#t?.options ? this.#t.options : []);
|
|
65
65
|
}
|
|
66
66
|
get #a() {
|
|
67
|
-
return Array.from(this.shadowRoot.querySelectorAll(
|
|
67
|
+
return Array.from(this.shadowRoot.querySelectorAll(p.metadata.tag));
|
|
68
68
|
}
|
|
69
69
|
get #o() {
|
|
70
|
-
return this.shadowRoot.querySelector(
|
|
70
|
+
return this.shadowRoot.querySelector(d.metadata.tag);
|
|
71
71
|
}
|
|
72
72
|
get #s() {
|
|
73
73
|
return this.shadowRoot.querySelector("[input]");
|
|
@@ -96,7 +96,7 @@ var S = {
|
|
|
96
96
|
#g;
|
|
97
97
|
#_;
|
|
98
98
|
get prefixContent() {
|
|
99
|
-
return this.#r?.multiple && !this.#v ?
|
|
99
|
+
return this.#r?.multiple && !this.#v ? h`<div class="tags-label" aria-hidden="true">${this.#r.selectedOptions.length} ${this.i18n.selected}</div><div class="tags">${Array.from(this.#r.selectedOptions).map((e) => h`<nve-tag part="tag" readonly="readonly" color="gray-slate" closable .value="${e.value}" @click="${() => this.#z(e)}">${t(e)}</nve-tag>`)}</div>` : h`<slot name="prefix-icon"></slot>`;
|
|
100
100
|
}
|
|
101
101
|
get #v() {
|
|
102
102
|
return this.tagLayout === "hidden";
|
|
@@ -108,13 +108,13 @@ var S = {
|
|
|
108
108
|
return !this._internals.states.has("dirty");
|
|
109
109
|
}
|
|
110
110
|
get suffixContent() {
|
|
111
|
-
if (
|
|
111
|
+
if (g) return _;
|
|
112
112
|
let e = this.#i, n = this.#y, r = this.#b, i = e.filter((e) => !e.hidden).filter((e) => !(e.value === "" && e.disabled)), a = i.filter((e) => !e.disabled).length === 0, o = this.#d;
|
|
113
|
-
return
|
|
113
|
+
return h`<nve-dropdown part="dropdown" .popoverType="${"manual"}" .modal="${!1}" @open="${this.#N}" @close="${this.#P}" hidden .anchor="${this.#s}" position="bottom"><nve-menu part="menu" role="listbox" style="--width:100%;--min-width:fit-content" aria-label="${y(this.i18n.select)}">${i.map((e) => h`<nve-menu-item part="menu-item" .option="${t(e)}" role="option" @click="${() => this.#z(e)}" ?selected="${e.selected}" aria-selected="${e.selected ? "true" : "false"}" ?disabled="${e.disabled}" aria-label="${t(e)}">${this.#x(e)} ${n || r ? t(e) : h`<span role="presentation">${(e.label ? e.label : e.value)?.split("")?.map((e, t) => h`<span ?matches="${this.#H(e, t)}">${e}</span>`)}</span>`}</nve-menu-item>`)} ${a && !o ? h`<nve-menu-item part="menu-item" .value="${""}" disabled="disabled">${this.i18n.noResults}</nve-menu-item>` : _} ${o ? h`<nve-menu-item part="create-option" role="button" aria-label="${`${this.i18n.create} "${this.input?.value.trim()}"`}" @click="${this.#B}"><nve-icon part="icon" name="add" size="sm"></nve-icon>"${this.input?.value.trim()}"</nve-menu-item>` : _}</nve-menu><slot name="footer"></slot></nve-dropdown>`;
|
|
114
114
|
}
|
|
115
115
|
#x(e) {
|
|
116
116
|
let t = this.#r;
|
|
117
|
-
return t?.multiple && this.#y ?
|
|
117
|
+
return t?.multiple && this.#y ? h`<input aria-hidden="true" type="checkbox" .checked="${e.selected}" .disabled="${e.disabled}" .name="${e.selected ? "check" : void 0}">` : t?.multiple ? h`<nve-checkbox part="checkbox"><input aria-hidden="true" type="checkbox" .checked="${e.selected}" .disabled="${e.disabled}" .name="${e.selected ? "check" : void 0}"></nve-checkbox>` : t ? h`<nve-icon part="icon" name="check" size="sm"></nve-icon>` : _;
|
|
118
118
|
}
|
|
119
119
|
async firstUpdated(e) {
|
|
120
120
|
super.firstUpdated(e), this.shadowRoot.addEventListener("slotchange", () => this.#j()), await this.updateComplete, this.#S(), this.#C(), this.#F(), this.#I(), this.#R(), this.#X(), await this.#L(), this.input.setAttribute("list", ""), this.input.autocomplete = "off";
|
|
@@ -210,7 +210,7 @@ var S = {
|
|
|
210
210
|
element: e.shadowRoot.querySelector("[internal-host]"),
|
|
211
211
|
focusElement: this.input
|
|
212
212
|
};
|
|
213
|
-
|
|
213
|
+
i(t, () => {
|
|
214
214
|
this.#o.matches(":popover-open") && this.#o.hidePopover();
|
|
215
215
|
});
|
|
216
216
|
}
|
|
@@ -285,18 +285,18 @@ var S = {
|
|
|
285
285
|
this.#u ? this._internals.states.add("footer-content") : this._internals.states.delete("footer-content");
|
|
286
286
|
}
|
|
287
287
|
};
|
|
288
|
-
|
|
288
|
+
a([v({
|
|
289
289
|
type: String,
|
|
290
290
|
reflect: !0
|
|
291
|
-
})], C.prototype, "container", void 0),
|
|
291
|
+
})], C.prototype, "container", void 0), a([v({
|
|
292
292
|
type: String,
|
|
293
293
|
reflect: !0,
|
|
294
294
|
attribute: "tag-layout"
|
|
295
|
-
})], C.prototype, "tagLayout", void 0),
|
|
295
|
+
})], C.prototype, "tagLayout", void 0), a([v({
|
|
296
296
|
type: Boolean,
|
|
297
297
|
reflect: !0,
|
|
298
298
|
attribute: "behavior-create"
|
|
299
|
-
})], C.prototype, "behaviorCreate", void 0), C =
|
|
299
|
+
})], C.prototype, "behaviorCreate", void 0), C = a([b()], C);
|
|
300
300
|
export { C as Combobox };
|
|
301
301
|
|
|
302
302
|
//# sourceMappingURL=combobox2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox2.js","names":["styles","_decorate","__decorate","combobox_default","comboboxI18nDefaults","Combobox","Control","_args","#observers","#syncPending","#overflowTarget","#trackedOptions","useStyles","inputStyles","Checkbox","Icon","Dropdown","Menu","MenuItem","Tag","#datalist","#_datalist","i","#select","#_select","#options","#items","#dropdown","#input","#tags","#hasAvailableOptions","o","#hasFooterContent","#showCreateItem","value","#findOptionMatch","lower","#tagLayoutIsHidden","#selectValue","getDisplayValue","#largeOptionsList","#isPristine","isServer","nothing","options","largeOptionsList","isPristine","visibleOptions","hasNoResults","showCreateItem","#openDropdown","#closeDropdown","ifDefined","#getOptionCheckbox","#characterAtIndexMatches","c","ci","#onCreateItemClick","select","props","#onSlottedChildMutation","#setupSingleSelect","#setupMultipleSelect","#setupAutoCompleteKeyEvents","#setupMenuItemUpdateEvents","#setupOpenKeyEvents","#setupSlotStates","#setupLightDismiss","#setupOverflowListener","observer","#setupOptionObservers","#overflowObserver","#cleanupOptionObservers","#overflowFrame","#setupInitialValue","#syncSelectValueStates","selected","getElementUpdate","#updateInputValue","#syncOptionSelectedStates","cleanup","getPropertyChanges","#cleanupStaleTrackedOptions","currentOptions","tracked","#validateSingleSelectValue","#setInputValue","#setSelectValue","match","#dispatchCreate","#filterOptions","dropdown","#openListBox","option","focusElementTimeout","index","character","found","tags","currentTags","#updateMultipleOverflow","tagWidth","#setSlotStates","property","scopedRegistry"],"sources":["../../src/combobox/combobox.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PropertyValues } from 'lit';\nimport { html, isServer, nothing } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport type { ContainerElement } from '@nvidia-elements/core/internal';\nimport type { I18nDefaults } from '@nvidia-elements/foundations/internal/i18n';\nimport {\n createLightDismiss,\n focusElementTimeout,\n getDisplayValue,\n getElementUpdate,\n getPropertyChanges,\n scopedRegistry,\n useStyles\n} from '@nvidia-elements/core/internal';\nimport { Control } from '@nvidia-elements/core/forms';\nimport { inputStyles } from '@nvidia-elements/core/input';\nimport { Menu, MenuItem } from '@nvidia-elements/core/menu';\nimport { Dropdown } from '@nvidia-elements/core/dropdown';\nimport { Tag } from '@nvidia-elements/core/tag';\nimport { Icon } from '@nvidia-elements/core/icon';\nimport { Checkbox } from '@nvidia-elements/core/checkbox';\nimport styles from './combobox.css?inline';\n\nconst comboboxI18nDefaults = {\n select: 'select',\n selected: 'selected',\n noResults: 'no results',\n create: 'create'\n} satisfies I18nDefaults;\n\n/**\n * @element nve-combobox\n * @description An editable combobox with autocomplete behavior and selection support.\n * @documentation https://nvidia.github.io/elements/docs/elements/combobox/\n * @since 0.17.0\n * @entrypoint \\@nvidia-elements/core/combobox\n * @slot - default slot for an input and a datalist/select element\n * @slot prefix-icon - slot for icon before the input\n * @slot footer - slot for dropdown footer content\n * @cssprop --scroll-height\n * @cssprop --padding\n * @cssprop --font-size\n * @cssprop --height\n * @cssprop --background\n * @cssprop --color\n * @cssprop --border-radius\n * @cssprop --border\n * @cssprop --cursor\n * @cssprop --font-weight\n * @cssprop --width\n * @cssprop --border-color\n * @cssprop --max-height\n * @cssprop --text-transform\n * @csspart tag - The tag element for selected items\n * @csspart dropdown - The dropdown popup element\n * @csspart menu - The menu element\n * @csspart menu-item - The menu item elements\n * @csspart checkbox - The checkbox element\n * @csspart icon - The icon element\n * @event scroll - Fires when the user scrolls the dropdown option list. Throttled to one dispatch per animation frame. `detail: { scrollTop, scrollHeight, clientHeight }`.\n * @event create - Fires when the user confirms a value that doesn't match any existing option and the `behavior-create` attribute exists. `detail: { value }`.\n * @csspart create-option - The menu item element for creating new options\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-autocomplete-list/\n */\n@scopedRegistry()\nexport class Combobox extends Control implements ContainerElement {\n protected override get i18nDefaults(): I18nDefaults {\n return comboboxI18nDefaults;\n }\n\n /**\n * Reduces the visual container for a minimal borderless appearance while preserving whitespace bounds.\n * Use when embedding within another container such as a toolbar.\n */\n @property({ type: String, reflect: true }) container: 'flat';\n\n /** Manage inline tag rendering for many-item select */\n @property({ type: String, reflect: true, attribute: 'tag-layout' }) tagLayout: 'hidden' | 'wrap';\n\n /** Enable creation of new options when the input value doesn't match any existing option. Dispatches a `create` event with `{ value }` detail. */\n @property({ type: Boolean, reflect: true, attribute: 'behavior-create' }) behaviorCreate: boolean;\n\n static styles = useStyles([...Control.styles, inputStyles, styles]);\n\n static readonly metadata = {\n tag: 'nve-combobox',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [Checkbox.metadata.tag]: Checkbox,\n [Icon.metadata.tag]: Icon,\n [Dropdown.metadata.tag]: Dropdown,\n [Menu.metadata.tag]: Menu,\n [MenuItem.metadata.tag]: MenuItem,\n [Tag.metadata.tag]: Tag\n };\n\n /**\n * If a <select> exists, on focus all options show by default.\n * If a <datalist> exists, on focus only options that match the current input value show.\n */\n\n #_datalist: HTMLSelectElement | null;\n get #datalist(): HTMLSelectElement | null {\n if (!this.#_datalist) {\n this.#_datalist = this.shadowRoot\n ? ((this.shadowRoot\n .querySelector('slot')\n ?.assignedElements({ flatten: true })\n ?.find(i => i.tagName === 'DATALIST' || i.tagName === 'SELECT') ??\n this.querySelector('datalist, select')) as HTMLSelectElement)\n : null;\n }\n return this.#_datalist;\n }\n\n #_select: HTMLSelectElement | null;\n get #select(): HTMLSelectElement | null {\n if (!this.#_select) {\n this.#_select = this.shadowRoot\n ? ((this.shadowRoot\n .querySelector('slot')\n ?.assignedElements({ flatten: true })\n ?.find(i => i.tagName === 'SELECT') ?? this.querySelector('select')) as HTMLSelectElement)\n : null;\n }\n return this.#_select;\n }\n\n get #options(): HTMLOptionElement[] {\n return Array.from(this.#datalist?.options ? this.#datalist.options : []);\n }\n\n get #items() {\n return Array.from(this.shadowRoot!.querySelectorAll<MenuItem>(MenuItem.metadata.tag));\n }\n\n get #dropdown() {\n return this.shadowRoot!.querySelector<Dropdown>(Dropdown.metadata.tag);\n }\n\n get #input() {\n return this.shadowRoot!.querySelector('[input]');\n }\n\n get #tags() {\n return this.shadowRoot!.querySelector('.tags');\n }\n\n get #hasAvailableOptions() {\n return this.#options.find(o => !o.disabled && !o.hidden);\n }\n\n get #hasFooterContent() {\n return !!this.querySelector('[slot=\"footer\"]');\n }\n\n get #showCreateItem(): boolean {\n if (!this.behaviorCreate || this.input?.disabled) return false;\n const value = this.input?.value.trim();\n if (!value) return false;\n return !this.#findOptionMatch(value);\n }\n\n #findOptionMatch(value: string): HTMLOptionElement | undefined {\n const lower = value.toLowerCase();\n return this.#options.find(o => {\n const display = o.textContent!.trim() || o.value;\n return display.toLowerCase() === lower || o.value.toLowerCase() === lower;\n });\n }\n\n #observers: (MutationObserver | ResizeObserver)[] = [];\n #syncPending = false;\n #overflowFrame?: number;\n #overflowObserver?: ResizeObserver;\n #overflowTarget: Element | null = null;\n\n protected _associateDatalist = false;\n\n protected get prefixContent() {\n return this.#select?.multiple && !this.#tagLayoutIsHidden\n ? html`\n <div class=\"tags-label\" aria-hidden=\"true\">${this.#select.selectedOptions.length} ${this.i18n.selected}</div>\n <div class=\"tags\">\n ${Array.from<HTMLOptionElement>(this.#select.selectedOptions).map(\n o => html`\n <nve-tag part=\"tag\" readonly color=\"gray-slate\" closable .value=${o.value} @click=${() => this.#selectValue(o)}>${getDisplayValue(o)}</nve-tag>`\n )}\n </div>`\n : html`<slot name=\"prefix-icon\"></slot>`;\n }\n\n get #tagLayoutIsHidden() {\n return this.tagLayout === 'hidden';\n }\n\n get #largeOptionsList() {\n return (this.#datalist?.options?.length ?? 0) > 50;\n }\n\n get #isPristine() {\n return !this._internals.states.has('dirty');\n }\n\n protected get suffixContent() {\n if (isServer) return nothing;\n const options = this.#options;\n const largeOptionsList = this.#largeOptionsList;\n const isPristine = this.#isPristine;\n const visibleOptions = options.filter(o => !o.hidden).filter(o => !(o.value === '' && o.disabled));\n const hasNoResults = visibleOptions.filter(o => !o.disabled).length === 0;\n const showCreateItem = this.#showCreateItem;\n return html`\n <nve-dropdown part=\"dropdown\" .popoverType=${'manual'} .modal=${false} @open=${this.#openDropdown} @close=${this.#closeDropdown} hidden .anchor=${this.#input as HTMLElement} position=\"bottom\">\n <nve-menu part=\"menu\" role=\"listbox\" style=\"--width: 100%; --min-width: fit-content\" aria-label=${ifDefined(this.i18n.select)}>\n ${visibleOptions.map(\n o => html`\n <nve-menu-item part=\"menu-item\" .option=${getDisplayValue(o)} role=\"option\" @click=${() => this.#selectValue(o)} ?selected=${o.selected} aria-selected=${o.selected ? 'true' : 'false'} ?disabled=${o.disabled} aria-label=${getDisplayValue(o)}>\n ${this.#getOptionCheckbox(o)}\n ${largeOptionsList || isPristine ? getDisplayValue(o) : html`<span role=\"presentation\">${(o.label ? o.label : o.value)?.split('')?.map((c, ci) => html`<span ?matches=${this.#characterAtIndexMatches(c, ci)}>${c}</span>`)}</span>`}\n </nve-menu-item>`\n )}\n ${hasNoResults && !showCreateItem ? html`<nve-menu-item part=\"menu-item\" .value=${''} disabled>${this.i18n.noResults}</nve-menu-item>` : nothing}\n ${\n showCreateItem\n ? html`<nve-menu-item part=\"create-option\" role=\"button\" aria-label=${`${this.i18n.create} \"${this.input?.value.trim()}\"`} @click=${this.#onCreateItemClick}>\n <nve-icon part=\"icon\" name=\"add\" size=\"sm\"></nve-icon> \"${this.input?.value.trim()}\"\n </nve-menu-item>`\n : nothing\n }\n </nve-menu>\n <slot name=\"footer\"></slot>\n </nve-dropdown>`;\n }\n\n #getOptionCheckbox(o: HTMLOptionElement) {\n const select = this.#select;\n if (select?.multiple && this.#largeOptionsList) {\n return html`<input aria-hidden=\"true\" type=\"checkbox\" .checked=${o.selected} .disabled=${o.disabled} .name=${o.selected ? 'check' : undefined} />`;\n } else if (select?.multiple) {\n /* eslint-disable @nvidia-elements/lint/no-missing-control-label */\n return html`<nve-checkbox part=\"checkbox\"><input aria-hidden=\"true\" type=\"checkbox\" .checked=${o.selected} .disabled=${o.disabled} .name=${o.selected ? 'check' : undefined} /></nve-checkbox>`;\n } else if (select) {\n return html`<nve-icon part=\"icon\" name=\"check\" size=\"sm\"></nve-icon>`;\n } else {\n return nothing;\n }\n }\n\n async firstUpdated(props: PropertyValues<this>) {\n super.firstUpdated(props);\n this.shadowRoot!.addEventListener('slotchange', () => this.#onSlottedChildMutation());\n await this.updateComplete;\n this.#setupSingleSelect();\n this.#setupMultipleSelect();\n this.#setupAutoCompleteKeyEvents();\n this.#setupMenuItemUpdateEvents();\n this.#setupOpenKeyEvents();\n this.#setupSlotStates();\n await this.#setupLightDismiss();\n this.input.setAttribute('list', '');\n this.input.autocomplete = 'off';\n }\n\n updated(props: PropertyValues<this>) {\n super.updated(props);\n this.#setupOverflowListener();\n }\n\n connectedCallback() {\n super.connectedCallback();\n const observer = new MutationObserver(() => this.#onSlottedChildMutation());\n observer.observe(this, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['selected', 'disabled', 'value'],\n characterData: true\n });\n this.#observers.push(observer);\n this.#setupOptionObservers();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#observers.forEach(observer => observer.disconnect());\n this.#observers.length = 0;\n this.#overflowObserver?.disconnect();\n this.#overflowTarget = null;\n this._internals.states.delete('multiple-overflow');\n this.#cleanupOptionObservers();\n if (this.#overflowFrame !== undefined) cancelAnimationFrame(this.#overflowFrame);\n this.#overflowFrame = undefined;\n }\n\n reset() {\n this.#dropdown!.hidePopover();\n if (this.#select) {\n this.#select.selectedIndex = -1;\n }\n super.reset();\n }\n\n /** Select all options provided */\n selectAll() {\n this.#options.forEach(o => (o.selected = true));\n this.requestUpdate();\n this.#select!.dispatchEvent(new Event('input', { bubbles: true }));\n this.#select!.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n #setupSingleSelect() {\n if (this.#select && !this.#select.multiple) {\n this.#setupInitialValue();\n this.#syncSelectValueStates();\n }\n }\n\n #setupMultipleSelect() {\n if (this.#select?.multiple) {\n this.#setupInitialValue();\n this.#syncSelectValueStates();\n this._internals.states.add('multiple');\n }\n }\n\n #setupInitialValue() {\n const selected = Array.from(this.#select!.selectedOptions).find((o: HTMLOptionElement) =>\n o.hasAttribute('selected')\n );\n if (selected && !this.#select!.multiple && !this.input.defaultValue) {\n this.input.value = getDisplayValue(selected);\n }\n }\n\n #updateInputValue() {\n if (!this.#select!.multiple && !this.input.defaultValue) {\n this.input.value = getDisplayValue(\n Array.from(this.#select!.selectedOptions).find(o => o.value === this.#select!.value)!\n );\n }\n }\n\n #syncSelectValueStates() {\n this.#observers.push(\n getElementUpdate(this.#select!, 'value', () => {\n this.#updateInputValue();\n this.requestUpdate();\n })\n );\n }\n\n #trackedOptions = new Map<HTMLOptionElement, ReturnType<typeof getPropertyChanges>>();\n\n #setupOptionObservers() {\n this.#_datalist = null;\n this.#_select = null;\n this.#syncOptionSelectedStates();\n this.requestUpdate();\n }\n\n #cleanupOptionObservers() {\n this.#trackedOptions.forEach(cleanup => cleanup?.());\n this.#trackedOptions.clear();\n }\n\n #syncOptionSelectedStates() {\n if (!this.isConnected) return;\n this.#options.forEach(o => {\n if (!this.#trackedOptions.has(o)) {\n this.#trackedOptions.set(\n o,\n getPropertyChanges(o, 'selected', () => this.requestUpdate())\n );\n }\n });\n }\n\n #onSlottedChildMutation() {\n if (!this.#syncPending) {\n this.#syncPending = true;\n queueMicrotask(() => {\n this.#syncPending = false;\n if (!this.isConnected) return;\n this.#_datalist = null;\n this.#_select = null;\n this.#cleanupStaleTrackedOptions();\n this.#syncOptionSelectedStates();\n this.requestUpdate();\n });\n }\n }\n\n #cleanupStaleTrackedOptions() {\n const currentOptions = new Set(this.#options);\n for (const [tracked, cleanup] of this.#trackedOptions) {\n if (!currentOptions.has(tracked)) {\n cleanup?.();\n this.#trackedOptions.delete(tracked);\n }\n }\n }\n\n #openDropdown() {\n this.#dropdown!.hidden = false;\n }\n\n #closeDropdown() {\n this.#dropdown!.hidden = true;\n this._internals.states.delete('dirty');\n this.#validateSingleSelectValue();\n }\n\n #setupAutoCompleteKeyEvents() {\n this.addEventListener('keydown', (e: KeyboardEvent) => {\n const value = this.input.value.trim();\n\n if (e.code === 'Tab') {\n if (this.#hasAvailableOptions && this.#dropdown!.matches(':popover-open') && value !== '') {\n e.preventDefault();\n // the menu item option property caches/stores the option value instead of value to prevent unnecessary lit lifecycle updates for each menu item\n this.#setInputValue((this.#items[0] as MenuItem & { option: string }).option);\n this.#setSelectValue(\n this.#options.find(\n o => (o.label ? o.label : o.value) === (this.#items[0] as MenuItem & { option: string }).option\n )!\n );\n }\n this.#dropdown!.hidePopover();\n }\n\n if (e.code === 'Enter' && this.behaviorCreate && !this.input.disabled && value) {\n const match = this.#findOptionMatch(value);\n if (match) {\n this.#selectValue(match);\n } else {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.#dispatchCreate();\n }\n }\n });\n }\n\n #setupMenuItemUpdateEvents() {\n this.input.addEventListener('input', () => this.#filterOptions());\n this.shadowRoot!.addEventListener('slotchange', () => this.#filterOptions());\n }\n\n async #setupLightDismiss() {\n const dropdown = this.#dropdown!;\n await dropdown.updateComplete;\n const options = {\n element: dropdown.shadowRoot!.querySelector<HTMLElement>('[internal-host]')!,\n focusElement: this.input\n };\n createLightDismiss(options, () => {\n if (this.#dropdown!.matches(':popover-open')) {\n this.#dropdown!.hidePopover();\n }\n });\n }\n\n #setupOpenKeyEvents() {\n this.#tags?.addEventListener('pointerup', () => {\n if (this.tagLayout !== 'wrap') return;\n this.input.focus();\n setTimeout(() => this.#openListBox(), 0);\n });\n\n this.input.addEventListener('pointerdown', () => {\n this.#openListBox();\n });\n\n this.addEventListener('keydown', (e: KeyboardEvent) => {\n if (e.code !== 'Tab' && e.code !== 'Escape') {\n this.#openListBox();\n }\n\n if (e?.code === 'ArrowDown' && (this.getRootNode() as ShadowRoot).activeElement === this.input) {\n this.#dropdown!.tabIndex = 0;\n this.#items[0]?.focus();\n e.preventDefault();\n }\n });\n }\n\n #selectValue(option: { selected?: boolean; label?: string; value?: string }) {\n if (!this.#select?.multiple) {\n this.#setInputValue(getDisplayValue(option));\n this.#dropdown!.hidePopover();\n focusElementTimeout(this.input);\n }\n\n if (this.#select) {\n option.selected = !option.selected;\n this.#setSelectValue(option);\n }\n\n this.requestUpdate();\n }\n\n #onCreateItemClick() {\n this.#dispatchCreate();\n }\n\n #dispatchCreate() {\n const value = this.input.value.trim();\n if (value) {\n this.dispatchEvent(new CustomEvent('create', { detail: { value }, bubbles: true, composed: true }));\n this.input.value = '';\n this.#dropdown!.hidePopover();\n focusElementTimeout(this.input);\n this.requestUpdate();\n }\n }\n\n #characterAtIndexMatches(character: string, index: number) {\n if (this.#hasAvailableOptions) {\n return this.input.value.toLowerCase()[index]?.toLowerCase() === character.toLowerCase();\n }\n return false;\n }\n\n #filterOptions() {\n this.#options.forEach(option => {\n const hasLabel = option.textContent!.trim().length;\n if (hasLabel) {\n const matchesLabel = option.textContent!.toLocaleLowerCase().includes(this.input?.value.toLowerCase());\n option.hidden = !matchesLabel;\n } else {\n const matchesValue = option.value.toLocaleLowerCase().includes(this.input?.value.toLowerCase());\n option.hidden = !matchesValue;\n }\n });\n this.requestUpdate();\n }\n\n #openListBox() {\n if (!this.input.disabled && !this.#dropdown!.matches(':popover-open')) {\n if (this.#select) {\n this.#options.forEach(option => (option.hidden = false));\n this.requestUpdate();\n } else {\n this.#filterOptions();\n }\n this.#dropdown!.style.setProperty('--min-width', `${this.#input!.getBoundingClientRect().width}px`);\n // explicitly provide source as the performance optimizations in the suffixContent getter prevent the dropdown from setting its anchor/trigger reliably\n this.#dropdown!.showPopover({ source: this.#input as HTMLElement });\n this.#dropdown!.tabIndex = -1;\n }\n }\n\n #validateSingleSelectValue() {\n const invalidInputValue =\n this.#select &&\n !this.#select.multiple &&\n !this.#options.filter(o => !(o.value === '' && o.disabled)).find(o => getDisplayValue(o) === this.input.value);\n if (invalidInputValue) {\n this.#options.forEach(o => (o.selected = false));\n this.#setInputValue('');\n this.#setSelectValue({ value: '', selected: false });\n }\n }\n\n #setInputValue(value: string) {\n this.input.value = value;\n this.input.dispatchEvent(new Event('input', { bubbles: true }));\n this.input.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n #setSelectValue(option: { value?: string; selected?: boolean }) {\n const found = [...this.#options, { value: '', selected: null as boolean | null }].find(\n o => o.value === option.value\n );\n if (found) found.selected = option.selected ?? null;\n\n if (this.#select && !this.#select.multiple) {\n this.#select.value = option.value!;\n }\n\n this.#select?.dispatchEvent(new Event('input', { bubbles: true }));\n this.#select?.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n #setupOverflowListener() {\n if (!this.isConnected) return;\n const tags = this.#select?.multiple && !this.#tagLayoutIsHidden ? this.#tags : null;\n if (tags === this.#overflowTarget) return;\n\n this.#overflowObserver?.disconnect();\n this.#overflowTarget = tags;\n if (this.#overflowFrame !== undefined) cancelAnimationFrame(this.#overflowFrame);\n this.#overflowFrame = undefined;\n if (!tags) {\n this._internals.states.delete('multiple-overflow');\n return;\n }\n\n this.#overflowObserver ??= new ResizeObserver(() => {\n if (this.#overflowFrame !== undefined) return;\n // Overflow styles can resize the input and tags. Apply them outside observer delivery.\n this.#overflowFrame = requestAnimationFrame(() => {\n this.#overflowFrame = undefined;\n const currentTags = this.#tags;\n if (this.isConnected && currentTags) this.#updateMultipleOverflow(currentTags.getBoundingClientRect().width);\n });\n });\n this.#overflowObserver.observe(tags);\n this.#overflowObserver.observe(this.#input!);\n }\n\n #updateMultipleOverflow(tagWidth: number) {\n const INPUT_MIN_WIDTH = 100;\n if (this.#select?.multiple && tagWidth > this.#input!.getBoundingClientRect().width - INPUT_MIN_WIDTH) {\n this._internals.states.add('multiple-overflow');\n } else {\n this._internals.states.delete('multiple-overflow');\n }\n }\n\n #setupSlotStates() {\n this.#setSlotStates();\n this.shadowRoot!.addEventListener('slotchange', () => this.#setSlotStates());\n }\n\n #setSlotStates() {\n if (this.#hasFooterContent) {\n this._internals.states.add('footer-content');\n } else {\n this._internals.states.delete('footer-content');\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox2.js","names":["styles","_decorate","__decorate","combobox_default","comboboxI18nDefaults","Combobox","Control","_args","#observers","#syncPending","#overflowTarget","#trackedOptions","useStyles","inputStyles","Checkbox","Icon","Dropdown","Menu","MenuItem","Tag","#datalist","#_datalist","i","#select","#_select","#options","#items","#dropdown","#input","#tags","#hasAvailableOptions","o","#hasFooterContent","#showCreateItem","value","#findOptionMatch","lower","#tagLayoutIsHidden","#selectValue","getDisplayValue","#largeOptionsList","#isPristine","isServer","nothing","options","largeOptionsList","isPristine","visibleOptions","hasNoResults","showCreateItem","#openDropdown","#closeDropdown","ifDefined","#getOptionCheckbox","#characterAtIndexMatches","c","ci","#onCreateItemClick","select","props","#onSlottedChildMutation","#setupSingleSelect","#setupMultipleSelect","#setupAutoCompleteKeyEvents","#setupMenuItemUpdateEvents","#setupOpenKeyEvents","#setupSlotStates","#setupLightDismiss","#setupOverflowListener","observer","#setupOptionObservers","#overflowObserver","#cleanupOptionObservers","#overflowFrame","#setupInitialValue","#syncSelectValueStates","selected","getElementUpdate","#updateInputValue","#syncOptionSelectedStates","cleanup","getPropertyChanges","#cleanupStaleTrackedOptions","currentOptions","tracked","#validateSingleSelectValue","#setInputValue","#setSelectValue","match","#dispatchCreate","#filterOptions","dropdown","#openListBox","option","focusElementTimeout","index","character","found","tags","currentTags","#updateMultipleOverflow","tagWidth","#setSlotStates","property","scopedRegistry"],"sources":["../../src/combobox/combobox.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PropertyValues } from 'lit';\nimport { html, isServer, nothing } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport type { ContainerElement } from '@nvidia-elements/core/internal';\nimport type { I18nDefaults } from '@nvidia-elements/foundations/internal/i18n';\nimport {\n createLightDismiss,\n focusElementTimeout,\n getDisplayValue,\n getElementUpdate,\n getPropertyChanges\n} from '@nvidia-elements/core/internal';\nimport { scopedRegistry } from '@nvidia-elements/foundations/internal/decorators';\nimport { useStyles } from '@nvidia-elements/foundations/internal/styles';\nimport { Control } from '@nvidia-elements/core/forms';\nimport { inputStyles } from '@nvidia-elements/core/input';\nimport { Menu, MenuItem } from '@nvidia-elements/core/menu';\nimport { Dropdown } from '@nvidia-elements/core/dropdown';\nimport { Tag } from '@nvidia-elements/core/tag';\nimport { Icon } from '@nvidia-elements/core/icon';\nimport { Checkbox } from '@nvidia-elements/core/checkbox';\nimport styles from './combobox.css?inline';\n\nconst comboboxI18nDefaults = {\n select: 'select',\n selected: 'selected',\n noResults: 'no results',\n create: 'create'\n} satisfies I18nDefaults;\n\n/**\n * @element nve-combobox\n * @description An editable combobox with autocomplete behavior and selection support.\n * @documentation https://nvidia.github.io/elements/docs/elements/combobox/\n * @since 0.17.0\n * @entrypoint \\@nvidia-elements/core/combobox\n * @slot - default slot for an input and a datalist/select element\n * @slot prefix-icon - slot for icon before the input\n * @slot footer - slot for dropdown footer content\n * @cssprop --scroll-height\n * @cssprop --padding\n * @cssprop --font-size\n * @cssprop --height\n * @cssprop --background\n * @cssprop --color\n * @cssprop --border-radius\n * @cssprop --border\n * @cssprop --cursor\n * @cssprop --font-weight\n * @cssprop --width\n * @cssprop --border-color\n * @cssprop --max-height\n * @cssprop --text-transform\n * @csspart tag - The tag element for selected items\n * @csspart dropdown - The dropdown popup element\n * @csspart menu - The menu element\n * @csspart menu-item - The menu item elements\n * @csspart checkbox - The checkbox element\n * @csspart icon - The icon element\n * @event scroll - Fires when the user scrolls the dropdown option list. Throttled to one dispatch per animation frame. `detail: { scrollTop, scrollHeight, clientHeight }`.\n * @event create - Fires when the user confirms a value that doesn't match any existing option and the `behavior-create` attribute exists. `detail: { value }`.\n * @csspart create-option - The menu item element for creating new options\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-autocomplete-list/\n */\n@scopedRegistry()\nexport class Combobox extends Control implements ContainerElement {\n protected override get i18nDefaults(): I18nDefaults {\n return comboboxI18nDefaults;\n }\n\n /**\n * Reduces the visual container for a minimal borderless appearance while preserving whitespace bounds.\n * Use when embedding within another container such as a toolbar.\n */\n @property({ type: String, reflect: true }) container: 'flat';\n\n /** Manage inline tag rendering for many-item select */\n @property({ type: String, reflect: true, attribute: 'tag-layout' }) tagLayout: 'hidden' | 'wrap';\n\n /** Enable creation of new options when the input value doesn't match any existing option. Dispatches a `create` event with `{ value }` detail. */\n @property({ type: Boolean, reflect: true, attribute: 'behavior-create' }) behaviorCreate: boolean;\n\n static styles = useStyles([...Control.styles, inputStyles, styles]);\n\n static readonly metadata = {\n tag: 'nve-combobox',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [Checkbox.metadata.tag]: Checkbox,\n [Icon.metadata.tag]: Icon,\n [Dropdown.metadata.tag]: Dropdown,\n [Menu.metadata.tag]: Menu,\n [MenuItem.metadata.tag]: MenuItem,\n [Tag.metadata.tag]: Tag\n };\n\n /**\n * If a <select> exists, on focus all options show by default.\n * If a <datalist> exists, on focus only options that match the current input value show.\n */\n\n #_datalist: HTMLSelectElement | null;\n get #datalist(): HTMLSelectElement | null {\n if (!this.#_datalist) {\n this.#_datalist = this.shadowRoot\n ? ((this.shadowRoot\n .querySelector('slot')\n ?.assignedElements({ flatten: true })\n ?.find(i => i.tagName === 'DATALIST' || i.tagName === 'SELECT') ??\n this.querySelector('datalist, select')) as HTMLSelectElement)\n : null;\n }\n return this.#_datalist;\n }\n\n #_select: HTMLSelectElement | null;\n get #select(): HTMLSelectElement | null {\n if (!this.#_select) {\n this.#_select = this.shadowRoot\n ? ((this.shadowRoot\n .querySelector('slot')\n ?.assignedElements({ flatten: true })\n ?.find(i => i.tagName === 'SELECT') ?? this.querySelector('select')) as HTMLSelectElement)\n : null;\n }\n return this.#_select;\n }\n\n get #options(): HTMLOptionElement[] {\n return Array.from(this.#datalist?.options ? this.#datalist.options : []);\n }\n\n get #items() {\n return Array.from(this.shadowRoot!.querySelectorAll<MenuItem>(MenuItem.metadata.tag));\n }\n\n get #dropdown() {\n return this.shadowRoot!.querySelector<Dropdown>(Dropdown.metadata.tag);\n }\n\n get #input() {\n return this.shadowRoot!.querySelector('[input]');\n }\n\n get #tags() {\n return this.shadowRoot!.querySelector('.tags');\n }\n\n get #hasAvailableOptions() {\n return this.#options.find(o => !o.disabled && !o.hidden);\n }\n\n get #hasFooterContent() {\n return !!this.querySelector('[slot=\"footer\"]');\n }\n\n get #showCreateItem(): boolean {\n if (!this.behaviorCreate || this.input?.disabled) return false;\n const value = this.input?.value.trim();\n if (!value) return false;\n return !this.#findOptionMatch(value);\n }\n\n #findOptionMatch(value: string): HTMLOptionElement | undefined {\n const lower = value.toLowerCase();\n return this.#options.find(o => {\n const display = o.textContent!.trim() || o.value;\n return display.toLowerCase() === lower || o.value.toLowerCase() === lower;\n });\n }\n\n #observers: (MutationObserver | ResizeObserver)[] = [];\n #syncPending = false;\n #overflowFrame?: number;\n #overflowObserver?: ResizeObserver;\n #overflowTarget: Element | null = null;\n\n protected _associateDatalist = false;\n\n protected get prefixContent() {\n return this.#select?.multiple && !this.#tagLayoutIsHidden\n ? html`\n <div class=\"tags-label\" aria-hidden=\"true\">${this.#select.selectedOptions.length} ${this.i18n.selected}</div>\n <div class=\"tags\">\n ${Array.from<HTMLOptionElement>(this.#select.selectedOptions).map(\n o => html`\n <nve-tag part=\"tag\" readonly color=\"gray-slate\" closable .value=${o.value} @click=${() => this.#selectValue(o)}>${getDisplayValue(o)}</nve-tag>`\n )}\n </div>`\n : html`<slot name=\"prefix-icon\"></slot>`;\n }\n\n get #tagLayoutIsHidden() {\n return this.tagLayout === 'hidden';\n }\n\n get #largeOptionsList() {\n return (this.#datalist?.options?.length ?? 0) > 50;\n }\n\n get #isPristine() {\n return !this._internals.states.has('dirty');\n }\n\n protected get suffixContent() {\n if (isServer) return nothing;\n const options = this.#options;\n const largeOptionsList = this.#largeOptionsList;\n const isPristine = this.#isPristine;\n const visibleOptions = options.filter(o => !o.hidden).filter(o => !(o.value === '' && o.disabled));\n const hasNoResults = visibleOptions.filter(o => !o.disabled).length === 0;\n const showCreateItem = this.#showCreateItem;\n return html`\n <nve-dropdown part=\"dropdown\" .popoverType=${'manual'} .modal=${false} @open=${this.#openDropdown} @close=${this.#closeDropdown} hidden .anchor=${this.#input as HTMLElement} position=\"bottom\">\n <nve-menu part=\"menu\" role=\"listbox\" style=\"--width: 100%; --min-width: fit-content\" aria-label=${ifDefined(this.i18n.select)}>\n ${visibleOptions.map(\n o => html`\n <nve-menu-item part=\"menu-item\" .option=${getDisplayValue(o)} role=\"option\" @click=${() => this.#selectValue(o)} ?selected=${o.selected} aria-selected=${o.selected ? 'true' : 'false'} ?disabled=${o.disabled} aria-label=${getDisplayValue(o)}>\n ${this.#getOptionCheckbox(o)}\n ${largeOptionsList || isPristine ? getDisplayValue(o) : html`<span role=\"presentation\">${(o.label ? o.label : o.value)?.split('')?.map((c, ci) => html`<span ?matches=${this.#characterAtIndexMatches(c, ci)}>${c}</span>`)}</span>`}\n </nve-menu-item>`\n )}\n ${hasNoResults && !showCreateItem ? html`<nve-menu-item part=\"menu-item\" .value=${''} disabled>${this.i18n.noResults}</nve-menu-item>` : nothing}\n ${\n showCreateItem\n ? html`<nve-menu-item part=\"create-option\" role=\"button\" aria-label=${`${this.i18n.create} \"${this.input?.value.trim()}\"`} @click=${this.#onCreateItemClick}>\n <nve-icon part=\"icon\" name=\"add\" size=\"sm\"></nve-icon> \"${this.input?.value.trim()}\"\n </nve-menu-item>`\n : nothing\n }\n </nve-menu>\n <slot name=\"footer\"></slot>\n </nve-dropdown>`;\n }\n\n #getOptionCheckbox(o: HTMLOptionElement) {\n const select = this.#select;\n if (select?.multiple && this.#largeOptionsList) {\n return html`<input aria-hidden=\"true\" type=\"checkbox\" .checked=${o.selected} .disabled=${o.disabled} .name=${o.selected ? 'check' : undefined} />`;\n } else if (select?.multiple) {\n /* eslint-disable @nvidia-elements/lint/no-missing-control-label */\n return html`<nve-checkbox part=\"checkbox\"><input aria-hidden=\"true\" type=\"checkbox\" .checked=${o.selected} .disabled=${o.disabled} .name=${o.selected ? 'check' : undefined} /></nve-checkbox>`;\n } else if (select) {\n return html`<nve-icon part=\"icon\" name=\"check\" size=\"sm\"></nve-icon>`;\n } else {\n return nothing;\n }\n }\n\n async firstUpdated(props: PropertyValues<this>) {\n super.firstUpdated(props);\n this.shadowRoot!.addEventListener('slotchange', () => this.#onSlottedChildMutation());\n await this.updateComplete;\n this.#setupSingleSelect();\n this.#setupMultipleSelect();\n this.#setupAutoCompleteKeyEvents();\n this.#setupMenuItemUpdateEvents();\n this.#setupOpenKeyEvents();\n this.#setupSlotStates();\n await this.#setupLightDismiss();\n this.input.setAttribute('list', '');\n this.input.autocomplete = 'off';\n }\n\n updated(props: PropertyValues<this>) {\n super.updated(props);\n this.#setupOverflowListener();\n }\n\n connectedCallback() {\n super.connectedCallback();\n const observer = new MutationObserver(() => this.#onSlottedChildMutation());\n observer.observe(this, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['selected', 'disabled', 'value'],\n characterData: true\n });\n this.#observers.push(observer);\n this.#setupOptionObservers();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#observers.forEach(observer => observer.disconnect());\n this.#observers.length = 0;\n this.#overflowObserver?.disconnect();\n this.#overflowTarget = null;\n this._internals.states.delete('multiple-overflow');\n this.#cleanupOptionObservers();\n if (this.#overflowFrame !== undefined) cancelAnimationFrame(this.#overflowFrame);\n this.#overflowFrame = undefined;\n }\n\n reset() {\n this.#dropdown!.hidePopover();\n if (this.#select) {\n this.#select.selectedIndex = -1;\n }\n super.reset();\n }\n\n /** Select all options provided */\n selectAll() {\n this.#options.forEach(o => (o.selected = true));\n this.requestUpdate();\n this.#select!.dispatchEvent(new Event('input', { bubbles: true }));\n this.#select!.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n #setupSingleSelect() {\n if (this.#select && !this.#select.multiple) {\n this.#setupInitialValue();\n this.#syncSelectValueStates();\n }\n }\n\n #setupMultipleSelect() {\n if (this.#select?.multiple) {\n this.#setupInitialValue();\n this.#syncSelectValueStates();\n this._internals.states.add('multiple');\n }\n }\n\n #setupInitialValue() {\n const selected = Array.from(this.#select!.selectedOptions).find((o: HTMLOptionElement) =>\n o.hasAttribute('selected')\n );\n if (selected && !this.#select!.multiple && !this.input.defaultValue) {\n this.input.value = getDisplayValue(selected);\n }\n }\n\n #updateInputValue() {\n if (!this.#select!.multiple && !this.input.defaultValue) {\n this.input.value = getDisplayValue(\n Array.from(this.#select!.selectedOptions).find(o => o.value === this.#select!.value)!\n );\n }\n }\n\n #syncSelectValueStates() {\n this.#observers.push(\n getElementUpdate(this.#select!, 'value', () => {\n this.#updateInputValue();\n this.requestUpdate();\n })\n );\n }\n\n #trackedOptions = new Map<HTMLOptionElement, ReturnType<typeof getPropertyChanges>>();\n\n #setupOptionObservers() {\n this.#_datalist = null;\n this.#_select = null;\n this.#syncOptionSelectedStates();\n this.requestUpdate();\n }\n\n #cleanupOptionObservers() {\n this.#trackedOptions.forEach(cleanup => cleanup?.());\n this.#trackedOptions.clear();\n }\n\n #syncOptionSelectedStates() {\n if (!this.isConnected) return;\n this.#options.forEach(o => {\n if (!this.#trackedOptions.has(o)) {\n this.#trackedOptions.set(\n o,\n getPropertyChanges(o, 'selected', () => this.requestUpdate())\n );\n }\n });\n }\n\n #onSlottedChildMutation() {\n if (!this.#syncPending) {\n this.#syncPending = true;\n queueMicrotask(() => {\n this.#syncPending = false;\n if (!this.isConnected) return;\n this.#_datalist = null;\n this.#_select = null;\n this.#cleanupStaleTrackedOptions();\n this.#syncOptionSelectedStates();\n this.requestUpdate();\n });\n }\n }\n\n #cleanupStaleTrackedOptions() {\n const currentOptions = new Set(this.#options);\n for (const [tracked, cleanup] of this.#trackedOptions) {\n if (!currentOptions.has(tracked)) {\n cleanup?.();\n this.#trackedOptions.delete(tracked);\n }\n }\n }\n\n #openDropdown() {\n this.#dropdown!.hidden = false;\n }\n\n #closeDropdown() {\n this.#dropdown!.hidden = true;\n this._internals.states.delete('dirty');\n this.#validateSingleSelectValue();\n }\n\n #setupAutoCompleteKeyEvents() {\n this.addEventListener('keydown', (e: KeyboardEvent) => {\n const value = this.input.value.trim();\n\n if (e.code === 'Tab') {\n if (this.#hasAvailableOptions && this.#dropdown!.matches(':popover-open') && value !== '') {\n e.preventDefault();\n // the menu item option property caches/stores the option value instead of value to prevent unnecessary lit lifecycle updates for each menu item\n this.#setInputValue((this.#items[0] as MenuItem & { option: string }).option);\n this.#setSelectValue(\n this.#options.find(\n o => (o.label ? o.label : o.value) === (this.#items[0] as MenuItem & { option: string }).option\n )!\n );\n }\n this.#dropdown!.hidePopover();\n }\n\n if (e.code === 'Enter' && this.behaviorCreate && !this.input.disabled && value) {\n const match = this.#findOptionMatch(value);\n if (match) {\n this.#selectValue(match);\n } else {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.#dispatchCreate();\n }\n }\n });\n }\n\n #setupMenuItemUpdateEvents() {\n this.input.addEventListener('input', () => this.#filterOptions());\n this.shadowRoot!.addEventListener('slotchange', () => this.#filterOptions());\n }\n\n async #setupLightDismiss() {\n const dropdown = this.#dropdown!;\n await dropdown.updateComplete;\n const options = {\n element: dropdown.shadowRoot!.querySelector<HTMLElement>('[internal-host]')!,\n focusElement: this.input\n };\n createLightDismiss(options, () => {\n if (this.#dropdown!.matches(':popover-open')) {\n this.#dropdown!.hidePopover();\n }\n });\n }\n\n #setupOpenKeyEvents() {\n this.#tags?.addEventListener('pointerup', () => {\n if (this.tagLayout !== 'wrap') return;\n this.input.focus();\n setTimeout(() => this.#openListBox(), 0);\n });\n\n this.input.addEventListener('pointerdown', () => {\n this.#openListBox();\n });\n\n this.addEventListener('keydown', (e: KeyboardEvent) => {\n if (e.code !== 'Tab' && e.code !== 'Escape') {\n this.#openListBox();\n }\n\n if (e?.code === 'ArrowDown' && (this.getRootNode() as ShadowRoot).activeElement === this.input) {\n this.#dropdown!.tabIndex = 0;\n this.#items[0]?.focus();\n e.preventDefault();\n }\n });\n }\n\n #selectValue(option: { selected?: boolean; label?: string; value?: string }) {\n if (!this.#select?.multiple) {\n this.#setInputValue(getDisplayValue(option));\n this.#dropdown!.hidePopover();\n focusElementTimeout(this.input);\n }\n\n if (this.#select) {\n option.selected = !option.selected;\n this.#setSelectValue(option);\n }\n\n this.requestUpdate();\n }\n\n #onCreateItemClick() {\n this.#dispatchCreate();\n }\n\n #dispatchCreate() {\n const value = this.input.value.trim();\n if (value) {\n this.dispatchEvent(new CustomEvent('create', { detail: { value }, bubbles: true, composed: true }));\n this.input.value = '';\n this.#dropdown!.hidePopover();\n focusElementTimeout(this.input);\n this.requestUpdate();\n }\n }\n\n #characterAtIndexMatches(character: string, index: number) {\n if (this.#hasAvailableOptions) {\n return this.input.value.toLowerCase()[index]?.toLowerCase() === character.toLowerCase();\n }\n return false;\n }\n\n #filterOptions() {\n this.#options.forEach(option => {\n const hasLabel = option.textContent!.trim().length;\n if (hasLabel) {\n const matchesLabel = option.textContent!.toLocaleLowerCase().includes(this.input?.value.toLowerCase());\n option.hidden = !matchesLabel;\n } else {\n const matchesValue = option.value.toLocaleLowerCase().includes(this.input?.value.toLowerCase());\n option.hidden = !matchesValue;\n }\n });\n this.requestUpdate();\n }\n\n #openListBox() {\n if (!this.input.disabled && !this.#dropdown!.matches(':popover-open')) {\n if (this.#select) {\n this.#options.forEach(option => (option.hidden = false));\n this.requestUpdate();\n } else {\n this.#filterOptions();\n }\n this.#dropdown!.style.setProperty('--min-width', `${this.#input!.getBoundingClientRect().width}px`);\n // explicitly provide source as the performance optimizations in the suffixContent getter prevent the dropdown from setting its anchor/trigger reliably\n this.#dropdown!.showPopover({ source: this.#input as HTMLElement });\n this.#dropdown!.tabIndex = -1;\n }\n }\n\n #validateSingleSelectValue() {\n const invalidInputValue =\n this.#select &&\n !this.#select.multiple &&\n !this.#options.filter(o => !(o.value === '' && o.disabled)).find(o => getDisplayValue(o) === this.input.value);\n if (invalidInputValue) {\n this.#options.forEach(o => (o.selected = false));\n this.#setInputValue('');\n this.#setSelectValue({ value: '', selected: false });\n }\n }\n\n #setInputValue(value: string) {\n this.input.value = value;\n this.input.dispatchEvent(new Event('input', { bubbles: true }));\n this.input.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n #setSelectValue(option: { value?: string; selected?: boolean }) {\n const found = [...this.#options, { value: '', selected: null as boolean | null }].find(\n o => o.value === option.value\n );\n if (found) found.selected = option.selected ?? null;\n\n if (this.#select && !this.#select.multiple) {\n this.#select.value = option.value!;\n }\n\n this.#select?.dispatchEvent(new Event('input', { bubbles: true }));\n this.#select?.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n #setupOverflowListener() {\n if (!this.isConnected) return;\n const tags = this.#select?.multiple && !this.#tagLayoutIsHidden ? this.#tags : null;\n if (tags === this.#overflowTarget) return;\n\n this.#overflowObserver?.disconnect();\n this.#overflowTarget = tags;\n if (this.#overflowFrame !== undefined) cancelAnimationFrame(this.#overflowFrame);\n this.#overflowFrame = undefined;\n if (!tags) {\n this._internals.states.delete('multiple-overflow');\n return;\n }\n\n this.#overflowObserver ??= new ResizeObserver(() => {\n if (this.#overflowFrame !== undefined) return;\n // Overflow styles can resize the input and tags. Apply them outside observer delivery.\n this.#overflowFrame = requestAnimationFrame(() => {\n this.#overflowFrame = undefined;\n const currentTags = this.#tags;\n if (this.isConnected && currentTags) this.#updateMultipleOverflow(currentTags.getBoundingClientRect().width);\n });\n });\n this.#overflowObserver.observe(tags);\n this.#overflowObserver.observe(this.#input!);\n }\n\n #updateMultipleOverflow(tagWidth: number) {\n const INPUT_MIN_WIDTH = 100;\n if (this.#select?.multiple && tagWidth > this.#input!.getBoundingClientRect().width - INPUT_MIN_WIDTH) {\n this._internals.states.add('multiple-overflow');\n } else {\n this._internals.states.delete('multiple-overflow');\n }\n }\n\n #setupSlotStates() {\n this.#setSlotStates();\n this.shadowRoot!.addEventListener('slotchange', () => this.#setSlotStates());\n }\n\n #setSlotStates() {\n if (this.#hasFooterContent) {\n this._internals.states.add('footer-content');\n } else {\n this._internals.states.delete('footer-content');\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ export declare class CopyButton extends Button {
|
|
|
32
32
|
/**
|
|
33
33
|
* Enables internal string values to update for internationalization.
|
|
34
34
|
*/
|
|
35
|
-
i18n: Partial<import("@nvidia-elements/
|
|
35
|
+
i18n: Partial<import("@nvidia-elements/foundations/internal/i18n").I18nStrings & {
|
|
36
36
|
__set: boolean;
|
|
37
37
|
}>;
|
|
38
38
|
/**
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import n from "../
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
1
|
+
import e from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
|
|
2
|
+
import { Icon as t } from "../icon/icon2.js";
|
|
3
|
+
import { Button as n } from "../button/button2.js";
|
|
4
|
+
import { Tooltip as r } from "../tooltip/tooltip2.js";
|
|
5
|
+
import { Toast as i } from "../toast/toast2.js";
|
|
6
|
+
import a from "./copy-button.js";
|
|
7
|
+
import { html as o, nothing as s } from "lit";
|
|
8
|
+
import { property as c } from "lit/decorators/property.js";
|
|
9
|
+
import { I18nController as l } from "@nvidia-elements/foundations/internal/i18n";
|
|
10
|
+
import { scopedRegistry as u } from "@nvidia-elements/foundations/internal/decorators";
|
|
11
|
+
import { useStyles as d } from "@nvidia-elements/foundations/internal/styles";
|
|
12
12
|
import { state as f } from "lit/decorators/state.js";
|
|
13
13
|
// src/copy-button/copy-button.ts
|
|
14
14
|
var p = {
|
|
15
15
|
copy: "copy",
|
|
16
16
|
copied: "copied"
|
|
17
|
-
}, m = class extends
|
|
17
|
+
}, m = class extends n {
|
|
18
18
|
constructor(...e) {
|
|
19
|
-
super(...e), this.copied = !1, this.showToast = !1, this.showTooltip = !1, this.#e = new
|
|
19
|
+
super(...e), this.copied = !1, this.showToast = !1, this.showTooltip = !1, this.#e = new l(this, p), this.i18n = this.#e.i18n, this.#t = () => {
|
|
20
20
|
this.behaviorCopy && navigator.clipboard.writeText(this.value).then(() => {
|
|
21
21
|
this.showToast = !0, this.copied = !0;
|
|
22
22
|
}).catch((e) => {
|
|
@@ -30,23 +30,23 @@ var p = {
|
|
|
30
30
|
}
|
|
31
31
|
#e;
|
|
32
32
|
static {
|
|
33
|
-
this.styles =
|
|
33
|
+
this.styles = d([...n.styles, a]);
|
|
34
34
|
}
|
|
35
35
|
static {
|
|
36
36
|
this.metadata = {
|
|
37
37
|
tag: "nve-copy-button",
|
|
38
|
-
version: "2.23.
|
|
38
|
+
version: "2.23.5"
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
static {
|
|
42
42
|
this.elementDefinitions = {
|
|
43
|
-
[
|
|
44
|
-
[
|
|
45
|
-
[
|
|
43
|
+
[t.metadata.tag]: t,
|
|
44
|
+
[i.metadata.tag]: i,
|
|
45
|
+
[r.metadata.tag]: r
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
render() {
|
|
49
|
-
return
|
|
49
|
+
return o`<div id="btn" internal-host interaction-state focus-within><slot></slot>${this.copied ? o`<nve-icon part="icon" name="check" status="success" .size="${this.size}" aria-hidden="true"></nve-icon>` : o`<slot name="icon"><nve-icon part="icon" name="copy" .size="${this.size}" aria-hidden="true"></nve-icon></slot>`}</div>${this.showToast ? o`<nve-toast part="toast" @close="${this.#n}" status="success" anchor="btn" position="top" close-timeout="1500">${this.i18n.copied}</nve-toast>` : s} ${this.showTooltip && !this.showToast ? o`<nve-tooltip part="tooltip" exportparts="arrow:tooltip-arrow" anchor="btn">${this.ariaLabel ?? this.i18n.copy}</nve-tooltip>` : s}`;
|
|
50
50
|
}
|
|
51
51
|
connectedCallback() {
|
|
52
52
|
super.connectedCallback(), this.addEventListener("click", this.#t), this.addEventListener("mouseenter", this.#r), this.addEventListener("mouseleave", this.#i);
|
|
@@ -61,11 +61,11 @@ var p = {
|
|
|
61
61
|
#r;
|
|
62
62
|
#i;
|
|
63
63
|
};
|
|
64
|
-
|
|
64
|
+
e([f()], m.prototype, "copied", void 0), e([f()], m.prototype, "showToast", void 0), e([f()], m.prototype, "showTooltip", void 0), e([c({ type: Object })], m.prototype, "i18n", void 0), e([c({
|
|
65
65
|
type: Boolean,
|
|
66
66
|
reflect: !0,
|
|
67
67
|
attribute: "behavior-copy"
|
|
68
|
-
})], m.prototype, "behaviorCopy", void 0),
|
|
68
|
+
})], m.prototype, "behaviorCopy", void 0), e([c({ type: String })], m.prototype, "value", void 0), m = e([u()], m);
|
|
69
69
|
export { m as CopyButton };
|
|
70
70
|
|
|
71
71
|
//# sourceMappingURL=copy-button2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-button2.js","names":["styles","_decorate","__decorate","copy_button_default","i18nDefaults","CopyButton","Button","_args","#i18nController","I18nController","#copy","err","#openTooltip","#closeTooltip","useStyles","Icon","Toast","Tooltip","#close","nothing","state","property","scopedRegistry"],"sources":["../../src/copy-button/copy-button.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, nothing } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { state } from 'lit/decorators/state.js';\nimport {
|
|
1
|
+
{"version":3,"file":"copy-button2.js","names":["styles","_decorate","__decorate","copy_button_default","i18nDefaults","CopyButton","Button","_args","#i18nController","I18nController","#copy","err","#openTooltip","#closeTooltip","useStyles","Icon","Toast","Tooltip","#close","nothing","state","property","scopedRegistry"],"sources":["../../src/copy-button/copy-button.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, nothing } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { state } from 'lit/decorators/state.js';\nimport { scopedRegistry } from '@nvidia-elements/foundations/internal/decorators';\nimport { useStyles } from '@nvidia-elements/foundations/internal/styles';\nimport { I18nController, type I18nDefaults } from '@nvidia-elements/foundations/internal/i18n';\nimport { Button } from '@nvidia-elements/core/button';\nimport { Icon } from '@nvidia-elements/core/icon';\nimport { Toast } from '@nvidia-elements/core/toast';\nimport { Tooltip } from '@nvidia-elements/core/tooltip';\nimport styles from './copy-button.css?inline';\n\nconst i18nDefaults = {\n copy: 'copy',\n copied: 'copied'\n} satisfies I18nDefaults;\n\n/**\n * @element nve-copy-button\n * @description A copy button is a button that easily enables the copy to clipboard pattern.\n * @documentation https://nvidia.github.io/elements/docs/elements/copy-button/\n * @since 1.1.4\n * @entrypoint \\@nvidia-elements/core/copy-button\n * @slot - Text label displayed before the copy icon.\n * @slot icon - slot for custom icon\n * @cssprop --color\n * @cssprop --background\n * @cssprop --border-radius\n * @cssprop --padding\n * @cssprop --height\n * @cssprop --min-width\n * @cssprop --font-size\n * @cssprop --line-height\n * @csspart icon - The icon element\n * @csspart toast - The toast notification element\n * @csspart tooltip - The tooltip element\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/button/\n *\n */\n@scopedRegistry()\nexport class CopyButton extends Button {\n @state() private copied = false;\n\n @state() private showToast = false;\n\n @state() private showTooltip = false;\n\n #i18nController: I18nController<this> = new I18nController<this>(this, i18nDefaults);\n\n /**\n * Enables internal string values to update for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n /**\n * Determines if the copy button should auto write to clipboard by the trigger.\n */\n @property({ type: Boolean, reflect: true, attribute: 'behavior-copy' }) behaviorCopy: boolean;\n\n /**\n * Defines the value that copies to the user clipboard. Use `aria-label` to set the tooltip hint.\n */\n @property({ type: String }) value: string;\n\n static styles = useStyles([...Button.styles, styles]);\n\n static readonly metadata = {\n tag: 'nve-copy-button',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [Icon.metadata.tag]: Icon,\n [Toast.metadata.tag]: Toast,\n [Tooltip.metadata.tag]: Tooltip\n };\n\n render() {\n return html`\n <div id=\"btn\" internal-host interaction-state focus-within>\n <slot></slot>\n ${\n this.copied\n ? html`<nve-icon part=\"icon\" name=\"check\" status=\"success\" .size=${this.size} aria-hidden=\"true\"></nve-icon>`\n : html`<slot name=\"icon\"><nve-icon part=\"icon\" name=\"copy\" .size=${this.size} aria-hidden=\"true\"></nve-icon></slot>`\n }\n </div>\n ${this.showToast ? html`<nve-toast part=\"toast\" @close=${this.#close} status=\"success\" anchor=\"btn\" position=\"top\" close-timeout=\"1500\">${this.i18n.copied}</nve-toast>` : nothing}\n ${this.showTooltip && !this.showToast ? html`<nve-tooltip part=\"tooltip\" exportparts=\"arrow:tooltip-arrow\" anchor=\"btn\">${this.ariaLabel ?? this.i18n.copy}</nve-tooltip>` : nothing}\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this.#copy);\n this.addEventListener('mouseenter', this.#openTooltip);\n this.addEventListener('mouseleave', this.#closeTooltip);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('click', this.#copy);\n this.removeEventListener('mouseenter', this.#openTooltip);\n this.removeEventListener('mouseleave', this.#closeTooltip);\n }\n\n #copy = () => {\n if (this.behaviorCopy) {\n navigator.clipboard\n .writeText(this.value)\n .then(() => {\n this.showToast = true;\n this.copied = true;\n })\n .catch(err => {\n this.showToast = false;\n console.error(err);\n });\n }\n };\n\n #close() {\n this.showToast = false;\n this.copied = false;\n this.showTooltip = false;\n }\n\n #openTooltip = () => {\n this.showTooltip = true;\n };\n\n #closeTooltip = () => {\n this.showTooltip = false;\n };\n}\n"],"mappings":";;;;;;;;;;;;;AAeA,IAAMI,IAAe;CACnB,MAAM;CACN,QAAQ;AACV,GAyBaC,IAAN,cAAyBC,EAAO;;EA2Ff,A,aA1FI,KAAA,SAAA,IAEG,KAAA,YAAA,IAEE,KAAA,cAAA,IAES,KAAAE,KAAA,IAAIC,EAAqB,MAAML,CAAY,GAKhD,KAAA,OAAA,KAAKI,GAAgB,MAsD1C,KAAAE,WAAA;GACZ,AAAI,KAAK,gBACP,UAAU,UACP,UAAU,KAAK,KAAK,CAAC,CACrB,WAAW;IAEV,AADA,KAAK,YAAY,IACjB,KAAK,SAAS;GAChB,CAAC,CAAC,CACD,OAAM,MAAO;IAEZ,AADA,KAAK,YAAY,IACjB,QAAQ,MAAMC,CAAG;GACnB,CAAC;EAEP,GAQqB,KAAAC,WAAA;GACnB,KAAK,cAAc;EACrB,GAEsB,KAAAC,WAAA;GACpB,KAAK,cAAc;EACrB;;CAtFA;;EAiBgB,KAAA,SAAAC,EAAU,CAAC,GAAGR,EAAO,QAAQN,CAAM,CAAC;;;EAEzB,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;;EAE4B,KAAA,qBAAA;IACzBe,EAAK,SAAS,MAAMA;IACpBC,EAAM,SAAS,MAAMA;IACrBC,EAAQ,SAAS,MAAMA;EAC1B;;CAEA,SAAS;EACP,OAAO,CAAI,2EAIL,KAAK,SACD,CAAI,8DAA6D,KAAK,KAAK,oCAC3E,CAAI,8DAA6D,KAAK,KAAK,yCAChF,QAEF,KAAK,YAAY,CAAI,mCAAkC,KAAKC,GAAO,sEAAqE,KAAK,KAAK,OAAO,gBAAgBC,EAAQ,GACjL,KAAK,eAAe,CAAC,KAAK,YAAY,CAAI,8EAA8E,KAAK,aAAa,KAAK,KAAK,KAAK,kBAAkBA;CAEhL;CAEA,oBAAoB;EAIlB,AAHA,MAAM,kBAAkB,GACxB,KAAK,iBAAiB,SAAS,KAAKT,EAAK,GACzC,KAAK,iBAAiB,cAAc,KAAKE,EAAY,GACrD,KAAK,iBAAiB,cAAc,KAAKC,EAAa;CACxD;CAEA,uBAAuB;EAIrB,AAHA,MAAM,qBAAqB,GAC3B,KAAK,oBAAoB,SAAS,KAAKH,EAAK,GAC5C,KAAK,oBAAoB,cAAc,KAAKE,EAAY,GACxD,KAAK,oBAAoB,cAAc,KAAKC,EAAa;CAC3D;CAEA;CAeA,KAAS;EAGP,AAFA,KAAK,YAAY,IACjB,KAAK,SAAS,IACd,KAAK,cAAc;CACrB;CAEA;CAIA;AAGF;AA7FGZ,EAAA,CAAAmB,EAAM,CAAA,GAAAf,EAAA,WAAA,UAAA,KAAA,CAAA,GAENJ,EAAA,CAAAmB,EAAM,CAAA,GAAAf,EAAA,WAAA,aAAA,KAAA,CAAA,GAENJ,EAAA,CAAAmB,EAAM,CAAA,GAAAf,EAAA,WAAA,eAAA,KAAA,CAAA,GAONJ,EAAA,CAAAoB,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAhB,EAAA,WAAA,QAAA,KAAA,CAAA,GAKzBJ,EAAA,CAAAoB,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,WAAW;AAAgB,CAAC,CAAA,GAAAhB,EAAA,WAAA,gBAAA,KAAA,CAAA,GAKrEJ,EAAA,CAAAoB,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAhB,EAAA,WAAA,SAAA,KAAA,CAAA,GAvB3B,IAAAJ,EAAA,CAAAqB,EAAe,CAAA,GAAAjB,CAAA"}
|
|
@@ -30343,32 +30343,6 @@
|
|
|
30343
30343
|
}
|
|
30344
30344
|
]
|
|
30345
30345
|
},
|
|
30346
|
-
{
|
|
30347
|
-
"kind": "javascript-module",
|
|
30348
|
-
"path": "/src/internal/decorators/scoped-registry.js",
|
|
30349
|
-
"declarations": [
|
|
30350
|
-
{
|
|
30351
|
-
"kind": "function",
|
|
30352
|
-
"name": "scopedRegistry",
|
|
30353
|
-
"return": {
|
|
30354
|
-
"type": {
|
|
30355
|
-
"text": "ClassDecorator"
|
|
30356
|
-
}
|
|
30357
|
-
},
|
|
30358
|
-
"description": "decorator which registers element dependencies with the scoped custom element registry when available"
|
|
30359
|
-
}
|
|
30360
|
-
],
|
|
30361
|
-
"exports": [
|
|
30362
|
-
{
|
|
30363
|
-
"kind": "js",
|
|
30364
|
-
"name": "scopedRegistry",
|
|
30365
|
-
"declaration": {
|
|
30366
|
-
"name": "scopedRegistry",
|
|
30367
|
-
"module": "/src/internal/decorators/scoped-registry.js"
|
|
30368
|
-
}
|
|
30369
|
-
}
|
|
30370
|
-
]
|
|
30371
|
-
},
|
|
30372
30346
|
{
|
|
30373
30347
|
"kind": "javascript-module",
|
|
30374
30348
|
"path": "/src/internal/index.js",
|
|
@@ -30502,14 +30476,6 @@
|
|
|
30502
30476
|
"module": "home/runner/work/elements/elements/projects/core/src/internal/decorators/host-attr.js"
|
|
30503
30477
|
}
|
|
30504
30478
|
},
|
|
30505
|
-
{
|
|
30506
|
-
"kind": "js",
|
|
30507
|
-
"name": "*",
|
|
30508
|
-
"declaration": {
|
|
30509
|
-
"name": "*",
|
|
30510
|
-
"module": "home/runner/work/elements/elements/projects/core/src/internal/decorators/scoped-registry.js"
|
|
30511
|
-
}
|
|
30512
|
-
},
|
|
30513
30479
|
{
|
|
30514
30480
|
"kind": "js",
|
|
30515
30481
|
"name": "*",
|
|
@@ -30778,19 +30744,6 @@
|
|
|
30778
30744
|
"kind": "variable",
|
|
30779
30745
|
"name": "supportStateStyles",
|
|
30780
30746
|
"default": "_supportStateStyles"
|
|
30781
|
-
},
|
|
30782
|
-
{
|
|
30783
|
-
"kind": "function",
|
|
30784
|
-
"name": "useStyles",
|
|
30785
|
-
"parameters": [
|
|
30786
|
-
{
|
|
30787
|
-
"name": "styles",
|
|
30788
|
-
"type": {
|
|
30789
|
-
"text": "unknown[]",
|
|
30790
|
-
"_sourceAliases": []
|
|
30791
|
-
}
|
|
30792
|
-
}
|
|
30793
|
-
]
|
|
30794
30747
|
}
|
|
30795
30748
|
],
|
|
30796
30749
|
"exports": [
|
|
@@ -30817,14 +30770,6 @@
|
|
|
30817
30770
|
"name": "supportStateStyles",
|
|
30818
30771
|
"module": "/src/internal/styles/index.js"
|
|
30819
30772
|
}
|
|
30820
|
-
},
|
|
30821
|
-
{
|
|
30822
|
-
"kind": "js",
|
|
30823
|
-
"name": "useStyles",
|
|
30824
|
-
"declaration": {
|
|
30825
|
-
"name": "useStyles",
|
|
30826
|
-
"module": "/src/internal/styles/index.js"
|
|
30827
|
-
}
|
|
30828
30773
|
}
|
|
30829
30774
|
]
|
|
30830
30775
|
},
|
|
@@ -30883,19 +30828,6 @@
|
|
|
30883
30828
|
"kind": "javascript-module",
|
|
30884
30829
|
"path": "/src/internal/utils/a11y.js",
|
|
30885
30830
|
"declarations": [
|
|
30886
|
-
{
|
|
30887
|
-
"kind": "function",
|
|
30888
|
-
"name": "attachInternals",
|
|
30889
|
-
"parameters": [
|
|
30890
|
-
{
|
|
30891
|
-
"name": "element",
|
|
30892
|
-
"type": {
|
|
30893
|
-
"text": "HTMLElement & { _internals?: ElementInternals }",
|
|
30894
|
-
"_sourceAliases": []
|
|
30895
|
-
}
|
|
30896
|
-
}
|
|
30897
|
-
]
|
|
30898
|
-
},
|
|
30899
30831
|
{
|
|
30900
30832
|
"kind": "function",
|
|
30901
30833
|
"name": "associateLabel",
|
|
@@ -30991,14 +30923,6 @@
|
|
|
30991
30923
|
}
|
|
30992
30924
|
],
|
|
30993
30925
|
"exports": [
|
|
30994
|
-
{
|
|
30995
|
-
"kind": "js",
|
|
30996
|
-
"name": "attachInternals",
|
|
30997
|
-
"declaration": {
|
|
30998
|
-
"name": "attachInternals",
|
|
30999
|
-
"module": "/src/internal/utils/a11y.js"
|
|
31000
|
-
}
|
|
31001
|
-
},
|
|
31002
30926
|
{
|
|
31003
30927
|
"kind": "js",
|
|
31004
30928
|
"name": "associateLabel",
|