se-design 1.0.87-dev.1 → 1.0.87-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index38.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import o, { forwardRef as Ce, useState as R, useRef as M, useCallback as U, useEffect as W, useImperativeHandle as De } from "react";
2
2
  import { Popover as $e } from "./index19.js";
3
- import { Icon as Ie } from "./index6.js";
4
- import { Checkbox as Te } from "./index23.js";
3
+ import { Icon as Te } from "./index6.js";
4
+ import { Checkbox as Ie } from "./index23.js";
5
5
  import { Button as ee } from "./index4.js";
6
6
  import { getA11yNameAttributes as Oe } from "./index81.js";
7
7
  import "./index72.js";
@@ -12,8 +12,8 @@ import { announce as Re } from "./index75.js";
12
12
  function d() {
13
13
  return d = Object.assign ? Object.assign.bind() : function(v) {
14
14
  for (var i = 1; i < arguments.length; i++) {
15
- var b = arguments[i];
16
- for (var k in b) ({}).hasOwnProperty.call(b, k) && (v[k] = b[k]);
15
+ var E = arguments[i];
16
+ for (var k in E) ({}).hasOwnProperty.call(E, k) && (v[k] = E[k]);
17
17
  }
18
18
  return v;
19
19
  }, d.apply(null, arguments);
@@ -21,22 +21,22 @@ function d() {
21
21
  const Ge = /* @__PURE__ */ Ce(({
22
22
  value: v,
23
23
  onChange: i,
24
- placeholder: b = "Type to search or add custom tags...",
24
+ placeholder: E = "Type to search or add custom tags...",
25
25
  className: k = "",
26
26
  options: g = [],
27
27
  renderOption: x,
28
28
  label: D,
29
29
  ariaLabel: ne,
30
30
  ariaLabelledBy: oe,
31
- ariaDescribedBy: ae,
32
- automationId: p = "",
31
+ ariaDescribedBy: le,
32
+ automationId: c = "",
33
33
  noOptionsMessage: L = "No options found",
34
34
  allowCustomTags: j = !0,
35
- disabled: a = !1,
35
+ disabled: l = !1,
36
36
  type: H = "select",
37
37
  showInput: z = !0,
38
38
  displayTagBy: B = "label",
39
- isWithPortal: le = !1
39
+ isWithPortal: ae = !1
40
40
  }, re) => {
41
41
  const G = (e) => e.map((t) => {
42
42
  const n = g.find((s) => s.value === t);
@@ -47,58 +47,58 @@ const Ge = /* @__PURE__ */ Ce(({
47
47
  label: t,
48
48
  value: t
49
49
  };
50
- }), [l, f] = R(() => G(v || [])), [r, y] = R(""), [K, se] = R(g), [c, u] = R(!1), ie = M(null), $ = M(null), I = M(!1), S = H === "multi-select-without-cta", m = H === "multi-select" || S, ce = te(p, "dropdown-input-tags-listbox"), q = te(p, "dropdown-input-tags-label"), T = U((e) => {
51
- if (a) return;
52
- const t = [...l];
50
+ }), [a, f] = R(() => G(v || [])), [r, y] = R(""), [K, se] = R(g), [u, p] = R(!1), ie = M(null), $ = M(null), T = M(!1), S = H === "multi-select-without-cta", m = H === "multi-select" || S, ce = te(c, "dropdown-input-tags-listbox"), q = te(c ? `${c}-label` : void 0, "dropdown-input-tags-label"), I = U((e) => {
51
+ if (l) return;
52
+ const t = [...a];
53
53
  t.some((n) => n.value === e.value) || (t.push({
54
54
  label: e.label,
55
55
  value: e.value
56
- }), f(t), i?.(t.map((n) => n.value))), y(""), u(!1);
57
- }, [a, l, i]), V = U((e, t) => {
56
+ }), f(t), i?.(t.map((n) => n.value))), y(""), p(!1);
57
+ }, [l, a, i]), V = U((e, t) => {
58
58
  let n = [];
59
- e ? n = [...l, {
59
+ e ? n = [...a, {
60
60
  label: t.label,
61
61
  value: t.value
62
- }] : n = l.filter((s) => s.value !== t.value), f(n), y(""), S && (I.current = !0, i?.(n.map((s) => s.value)));
63
- }, [l, S, i]), O = "__add_custom_tag__", J = "__no_results__", ue = {
62
+ }] : n = a.filter((s) => s.value !== t.value), f(n), y(""), S && (T.current = !0, i?.(n.map((s) => s.value)));
63
+ }, [a, S, i]), O = "__add_custom_tag__", J = "__no_results__", ue = {
64
64
  id: J,
65
65
  label: L,
66
66
  value: J,
67
67
  __noResults: !0
68
68
  }, pe = (e) => !!e?.__noResults, Q = U((e) => {
69
- if (!a) {
69
+ if (!l) {
70
70
  if (e.value === O) {
71
71
  const t = r.trim();
72
72
  if (!t) return;
73
- const n = [...l];
73
+ const n = [...a];
74
74
  n.some((s) => s.value === t) || (n.push({
75
75
  label: t,
76
76
  value: t
77
- }), f(n), i?.(n.map((s) => s.value))), y(""), u(!1);
77
+ }), f(n), i?.(n.map((s) => s.value))), y(""), p(!1);
78
78
  return;
79
79
  }
80
80
  if (m) {
81
- const t = l.some((n) => n.value === e.value);
81
+ const t = a.some((n) => n.value === e.value);
82
82
  V(!t, e);
83
83
  } else
84
- T(e);
84
+ I(e);
85
85
  }
86
- }, [a, m, l, r, i, V, T]), w = K.length > 0 ? K : j && r.trim() ? [{
86
+ }, [l, m, a, r, i, V, I]), w = K.length > 0 ? K : j && r.trim() ? [{
87
87
  id: O,
88
88
  label: `Add "${r.trim()}"`,
89
89
  value: O
90
- }] : [], X = w.length === 0 && c ? [ue] : w, {
90
+ }] : [], X = w.length === 0 && u ? [ue] : w, {
91
91
  containerProps: me,
92
92
  inputProps: Y,
93
93
  listboxProps: de,
94
94
  getOptionProps: N,
95
95
  highlightedIndex: h,
96
- setHighlightedIndex: E,
96
+ setHighlightedIndex: b,
97
97
  isKeyboardFocused: Z
98
98
  } = Ae({
99
99
  items: X,
100
- isOpen: c,
101
- onOpenChange: u,
100
+ isOpen: u,
101
+ onOpenChange: p,
102
102
  onSelect: Q,
103
103
  listboxId: ce,
104
104
  hasItems: X.length > 0,
@@ -107,97 +107,97 @@ const Ge = /* @__PURE__ */ Ce(({
107
107
  isItemDisabled: pe
108
108
  }), _ = (e) => e ? `highlighted${Z ? " keyboard-highlight" : ""}` : "";
109
109
  W(() => {
110
- if (I.current) {
111
- I.current = !1;
110
+ if (T.current) {
111
+ T.current = !1;
112
112
  return;
113
113
  }
114
114
  f(G(v || []));
115
- }, [v, g, c]), W(() => {
115
+ }, [v, g, u]), W(() => {
116
116
  const e = g.filter((t) => t.label.toLowerCase().includes(r.toLowerCase()) || t.value.toLowerCase().includes(r.toLowerCase()));
117
117
  se(e);
118
118
  }, [r, g]), W(() => {
119
- c && w.length === 0 && r.trim() && h === -1 && Re(L, {
119
+ u && w.length === 0 && r.trim() && h === -1 && Re(L, {
120
120
  assertiveness: "polite",
121
121
  batchId: "dropdown-input-tags-empty-state",
122
122
  delay: 300
123
123
  });
124
- }, [w.length, c, r, h]);
124
+ }, [w.length, u, r, h]);
125
125
  const fe = (e) => {
126
- if (a) return;
127
- const t = l.filter((n, s) => s !== e);
128
- f(t), (!m || S || m && !c) && i?.(t.map((n) => n.value));
126
+ if (l) return;
127
+ const t = a.filter((n, s) => s !== e);
128
+ f(t), (!m || S || m && !u) && i?.(t.map((n) => n.value));
129
129
  }, ge = (e) => {
130
- if (!a) {
131
- if (e.key === "Backspace" && r === "" && l.length > 0) {
130
+ if (!l) {
131
+ if (e.key === "Backspace" && r === "" && a.length > 0) {
132
132
  e.preventDefault();
133
- const t = l.slice(0, -1);
133
+ const t = a.slice(0, -1);
134
134
  f(t), i?.(t.map((n) => n.value));
135
135
  return;
136
136
  }
137
137
  if (e.key === "Enter" && r.trim() && K.length === 0 && j) {
138
138
  e.preventDefault();
139
- const t = [...l];
139
+ const t = [...a];
140
140
  t.some((n) => n.value === r.trim()) || (t.push({
141
141
  label: r.trim(),
142
142
  value: r.trim()
143
- }), f(t), i?.(t.map((n) => n.value))), y(""), E(-1), u(!1);
143
+ }), f(t), i?.(t.map((n) => n.value))), y(""), b(-1), p(!1);
144
144
  return;
145
145
  }
146
146
  Y.onKeyDown(e);
147
147
  }
148
148
  }, he = (e) => {
149
- if (a) return;
149
+ if (l) return;
150
150
  const t = e.target.value;
151
- y(t), E(-1), t.trim() && !c && u(!0);
151
+ y(t), b(-1), t.trim() && !u && p(!0);
152
152
  }, ve = () => {
153
- a || (r.trim() || g.length > 0) && u(!0);
153
+ l || (r.trim() || g.length > 0) && p(!0);
154
154
  }, we = (e) => {
155
- a || (e.stopPropagation(), $.current?.focus(), !c && (r.trim() || g.length > 0) && u(!0));
156
- }, Ee = (e) => {
157
- if (a) {
155
+ l || (e.stopPropagation(), $.current?.focus(), !u && (r.trim() || g.length > 0) && p(!0));
156
+ }, be = (e) => {
157
+ if (l) {
158
158
  e.preventDefault(), e.stopPropagation();
159
159
  return;
160
160
  }
161
161
  e.target.closest(".input-with-tags-container") && e.stopPropagation();
162
- }, be = () => {
163
- a || u(!c);
162
+ }, Ee = () => {
163
+ l || p(!u);
164
164
  };
165
165
  De(re, () => ({
166
- toggleDropdown: be
166
+ toggleDropdown: Ee
167
167
  }), []);
168
168
  const ke = (e, t, n, s) => {
169
- const P = l.some((C) => C.value === e.value), A = h === t, F = N(t, P);
169
+ const P = a.some((C) => C.value === e.value), A = h === t, F = N(t, P);
170
170
  return /* @__PURE__ */ o.createElement("div", d({
171
171
  key: e.id
172
172
  }, F, {
173
173
  className: `dropdown-with-input-tags-option ${_(A)}`,
174
174
  onClick: () => !s && n(e),
175
- onMouseEnter: () => E(t),
176
- "data-automation-id": `${p}-option-${e.id}`
175
+ onMouseEnter: () => b(t),
176
+ "data-automation-id": `${c}-option-${e.id}`
177
177
  }), /* @__PURE__ */ o.createElement("span", {
178
178
  className: "option-label"
179
179
  }, e.label), e.value !== e.label && /* @__PURE__ */ o.createElement("span", {
180
180
  className: "option-value"
181
181
  }, e.value));
182
182
  }, ye = () => {
183
- I.current = !0;
184
- const e = l.map((t) => t.value);
185
- i?.(e), u(!1);
183
+ T.current = !0;
184
+ const e = a.map((t) => t.value);
185
+ i?.(e), p(!1);
186
186
  }, Se = () => {
187
187
  f([]);
188
188
  }, Ne = (e, t) => {
189
- const n = l.some((A) => A.value === e.value), s = h === t, P = N(t, n);
189
+ const n = a.some((A) => A.value === e.value), s = h === t, P = N(t, n);
190
190
  return /* @__PURE__ */ o.createElement("div", d({
191
191
  key: e.id
192
192
  }, P, {
193
193
  className: `dropdown-with-input-tags-option dropdown-with-input-tags-multi-select-option ${_(s)}`,
194
194
  "aria-checked": n,
195
195
  onClick: () => {
196
- a || (V(!n, e), $.current?.focus());
196
+ l || (V(!n, e), $.current?.focus());
197
197
  },
198
- onMouseEnter: () => E(t),
199
- "data-automation-id": `${p}-option-${e.id}`
200
- }), /* @__PURE__ */ o.createElement(Te, {
198
+ onMouseEnter: () => b(t),
199
+ "data-automation-id": `${c}-option-${e.id}`
200
+ }), /* @__PURE__ */ o.createElement(Ie, {
201
201
  automationId: "checkbox",
202
202
  className: "checkbox",
203
203
  checked: n,
@@ -216,32 +216,32 @@ const Ge = /* @__PURE__ */ Ce(({
216
216
  type: "link",
217
217
  size: "sm",
218
218
  onClick: Se,
219
- automationId: `${p}-clear-button`
219
+ automationId: `${c}-clear-button`
220
220
  }), /* @__PURE__ */ o.createElement(ee, {
221
221
  label: "Apply",
222
222
  type: "primary",
223
223
  size: "sm",
224
224
  onClick: ye,
225
- automationId: `${p}-apply-button`
225
+ automationId: `${c}-apply-button`
226
226
  }));
227
227
  return /* @__PURE__ */ o.createElement("div", d({
228
- className: `dropdown-with-input-tags-wrapper ${k} ${a ? "disabled-wrapper" : ""}`,
229
- "data-automation-id": p
228
+ className: `dropdown-with-input-tags-wrapper ${k} ${l ? "disabled-wrapper" : ""}`,
229
+ "data-automation-id": c
230
230
  }, me), D && /* @__PURE__ */ o.createElement("label", {
231
231
  id: q,
232
232
  className: "dropdown-with-input-tags-label"
233
233
  }, D), /* @__PURE__ */ o.createElement("div", {
234
- onClick: Ee
234
+ onClick: be
235
235
  }, /* @__PURE__ */ o.createElement($e, {
236
236
  ref: ie,
237
237
  className: "dropdown-with-input-tags-popover",
238
238
  contentWidth: "full",
239
239
  position: "bottom-left",
240
- isPopoverOpen: !a && c,
241
- onPopoverToggle: a ? () => {
242
- } : u,
240
+ isPopoverOpen: !l && u,
241
+ onPopoverToggle: l ? () => {
242
+ } : p,
243
243
  disableClickToggle: !0,
244
- isWithPortal: le,
244
+ isWithPortal: ae,
245
245
  renderPopoverContents: ({
246
246
  closePopoverCb: e
247
247
  }) => /* @__PURE__ */ o.createElement(o.Fragment, null, /* @__PURE__ */ o.createElement("div", d({}, de, {
@@ -256,19 +256,19 @@ const Ge = /* @__PURE__ */ Ce(({
256
256
  }, Pe, {
257
257
  className: `dropdown-with-input-tags-option dropdown-with-input-tags-custom-option ${_(C)}`,
258
258
  onClick: () => {
259
- a || (Q(t), e());
259
+ l || (Q(t), e());
260
260
  },
261
- onMouseEnter: () => E(n)
261
+ onMouseEnter: () => b(n)
262
262
  }), 'Add "', r.trim(), '"');
263
263
  }
264
264
  if (m)
265
265
  return Ne(t, n);
266
- const s = l.some((C) => C.value === t.value), P = h === n, F = {
266
+ const s = a.some((C) => C.value === t.value), P = h === n, F = {
267
267
  ...N(n, s),
268
- onMouseEnter: () => E(n),
268
+ onMouseEnter: () => b(n),
269
269
  className: `dropdown-with-input-tags-option ${_(P)}`
270
270
  };
271
- return x ? x(t, F, T) : ke(t, n, T, a);
271
+ return x ? x(t, F, I) : ke(t, n, I, l);
272
272
  }) : /* @__PURE__ */ o.createElement("div", d({}, N(0, !1), {
273
273
  className: `dropdown-with-input-tags-no-options ${_(h === 0)}`
274
274
  }), /* @__PURE__ */ o.createElement("div", {
@@ -277,21 +277,21 @@ const Ge = /* @__PURE__ */ Ce(({
277
277
  renderPopoverSrcElement: () => /* @__PURE__ */ o.createElement("div", {
278
278
  className: "dropdown-with-input-tags-input-container"
279
279
  }, /* @__PURE__ */ o.createElement("div", {
280
- className: `input-with-tags-container ${a ? "disabled-input-with-tags-container" : ""} ${Z ? "keyboard-focused" : ""}`,
280
+ className: `input-with-tags-container ${l ? "disabled-input-with-tags-container" : ""} ${Z ? "keyboard-focused" : ""}`,
281
281
  onClick: we,
282
282
  onKeyDown: (e) => {
283
283
  e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey && $.current?.focus();
284
284
  }
285
- }, l.map((e, t) => /* @__PURE__ */ o.createElement("span", {
285
+ }, a.map((e, t) => /* @__PURE__ */ o.createElement("span", {
286
286
  key: t,
287
287
  className: "tag-in-inputwithtags"
288
- }, e[B], !a && /* @__PURE__ */ o.createElement(Ie, {
288
+ }, e[B], !l && /* @__PURE__ */ o.createElement(Te, {
289
289
  name: "close",
290
290
  className: "close-icon-in-inputwithtags",
291
291
  ariaLabel: `Remove tag ${e[B]}`,
292
292
  onClick: () => fe(t),
293
293
  shouldStopPropagation: !0
294
- }))), (z || !l.length || m) && /* @__PURE__ */ o.createElement("input", d({
294
+ }))), (z || !a.length || m) && /* @__PURE__ */ o.createElement("input", d({
295
295
  ref: $
296
296
  }, Y, {
297
297
  type: "text",
@@ -299,17 +299,17 @@ const Ge = /* @__PURE__ */ Ce(({
299
299
  onChange: he,
300
300
  onKeyDown: ge,
301
301
  onFocus: ve,
302
- placeholder: l.length === 0 ? b : "",
303
- className: `input-with-tags-input${!z && l.length > 0 && !r ? " sr-only" : ""}`,
304
- disabled: a
302
+ placeholder: a.length === 0 ? E : "",
303
+ className: `input-with-tags-input${!z && a.length > 0 && !r ? " sr-only" : ""}`,
304
+ disabled: l
305
305
  }, Oe({
306
306
  ariaLabel: ne || (D ? void 0 : "Search and select options"),
307
307
  ariaLabelledBy: oe,
308
308
  internalLabelId: D ? q : void 0,
309
- ariaDescribedBy: ae
309
+ ariaDescribedBy: le
310
310
  }))))),
311
- automationId: p,
312
- popoverContentAutomationId: `${p}-content`
311
+ automationId: c,
312
+ popoverContentAutomationId: `${c}-content`
313
313
  })));
314
314
  });
315
315
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"index38.js","sources":["../src/components/DropdownWithInputTags/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, forwardRef, ForwardedRef, useImperativeHandle, KeyboardEvent, useCallback } from 'react';\nimport { Popover, PopoverHandle } from '../Popover';\nimport { Icon } from '../Icon';\nimport { Checkbox } from '../Checkbox';\nimport { Button } from '../Button';\nimport { useCombobox, getA11yNameAttributes } from '../../utils/a11y';\nimport { announce } from '../../utils/a11y/liveAnnouncer/LiveAnnouncer';\nimport { useStableId } from '../../utils/useStableId';\nimport './styles.scss';\n\nexport interface DropdownOption {\n id: string | number;\n label: string;\n value: string;\n [key: string]: any; // Allow additional properties\n}\n\nexport interface DropdownWithInputTagsHandle {\n toggleDropdown: () => void;\n}\n\nexport interface DropdownWithInputTagsProps {\n value: string[];\n onChange?: (tags: string[]) => void;\n placeholder?: string;\n className?: string;\n options?: DropdownOption[];\n renderOption?: (\n option: DropdownOption,\n props: {\n id: string;\n role: 'option';\n 'aria-selected'?: boolean;\n 'aria-disabled'?: true;\n onMouseEnter: () => void;\n className: string;\n },\n onSelect: (option: DropdownOption) => void\n ) => React.ReactNode;\n label?: string;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaDescribedBy?: string;\n automationId?: string;\n noOptionsMessage?: string;\n allowCustomTags?: boolean;\n disabled?: boolean;\n type?: 'select' | 'multi-select' |'multi-select-without-cta';\n showInput?: boolean;\n displayTagBy?: 'label' | 'value';\n isWithPortal?: boolean;\n}\n\nexport const DropdownWithInputTags = forwardRef<DropdownWithInputTagsHandle, DropdownWithInputTagsProps>(\n (\n {\n value,\n onChange,\n placeholder = \"Type to search or add custom tags...\",\n className = '',\n options = [],\n renderOption,\n label,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n automationId = '',\n noOptionsMessage = \"No options found\",\n allowCustomTags = true,\n disabled = false,\n type = 'select',\n showInput = true,\n displayTagBy = 'label',\n isWithPortal = false\n },\n ref: ForwardedRef<DropdownWithInputTagsHandle>\n ) => {\n // Define initValues at the top, right after props\n const initValues = (values: string[]) => {\n return values.map(val => {\n const found = options.find(opt => opt.value === val);\n return found ? { label: found.label, value: found.value } : { label: val, value: val };\n });\n };\n\n // Now use it in useState\n const [tags, setTags] = useState<{ label: string; value: string }[]>(() => {\n return initValues(value || []);\n });\n const [inputValue, setInputValue] = useState('');\n const [filteredOptions, setFilteredOptions] = useState<DropdownOption[]>(options);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const popoverRef = useRef<PopoverHandle>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const applyClickedRef = useRef<boolean>(false);\n \n const isMultiSelectWithoutCTA = type === 'multi-select-without-cta';\n const isMultiSelect = type === 'multi-select' ||isMultiSelectWithoutCTA;\n\n // Generate stable ID for listbox\n const listboxId = useStableId(automationId, 'dropdown-input-tags-listbox');\n const labelId = useStableId(automationId, 'dropdown-input-tags-label');\n\n const handleSelectOption = useCallback(\n (option: DropdownOption) => {\n if (disabled) return;\n\n const newTags = [...tags];\n if (!newTags.some((tag) => tag.value === option.value)) {\n newTags.push({ label: option.label, value: option.value });\n setTags(newTags);\n onChange?.(newTags.map((tag) => tag.value));\n }\n setInputValue('');\n setIsDropdownOpen(false);\n },\n [disabled, tags, onChange]\n );\n\n const handleMultiSelectDropdownOptionClick = useCallback(\n (isSelected: boolean, option: DropdownOption) => {\n let newSelectedTags: { label: string; value: string }[] = [];\n if (isSelected) {\n newSelectedTags = [...tags, { label: option.label, value: option.value }];\n } else {\n newSelectedTags = tags.filter((tag) => tag.value !== option.value);\n }\n setTags(newSelectedTags);\n setInputValue('');\n if (isMultiSelectWithoutCTA) {\n applyClickedRef.current = true;\n onChange?.(newSelectedTags.map((tag) => tag.value));\n }\n },\n [tags, isMultiSelectWithoutCTA, onChange]\n );\n\n const ADD_CUSTOM_TAG_VALUE = '__add_custom_tag__';\n const NO_RESULTS_VALUE = '__no_results__';\n const NO_RESULTS_SENTINEL: DropdownOption = { id: NO_RESULTS_VALUE, label: noOptionsMessage, value: NO_RESULTS_VALUE, __noResults: true };\n const isNoResultsSentinel = (item: DropdownOption) => !!item?.__noResults;\n\n const handleSelectFromDropdown = useCallback((option: DropdownOption) => {\n if (disabled) return;\n\n if (option.value === ADD_CUSTOM_TAG_VALUE) {\n const trimmed = inputValue.trim();\n if (!trimmed) return;\n const newTags = [...tags];\n if (!newTags.some((tag) => tag.value === trimmed)) {\n newTags.push({ label: trimmed, value: trimmed });\n setTags(newTags);\n onChange?.(newTags.map((tag) => tag.value));\n }\n setInputValue('');\n setIsDropdownOpen(false);\n return;\n }\n\n if (isMultiSelect) {\n const isSelected = tags.some(tag => tag.value === option.value);\n handleMultiSelectDropdownOptionClick(!isSelected, option);\n } else {\n handleSelectOption(option);\n }\n }, [disabled, isMultiSelect, tags, inputValue, onChange, handleMultiSelectDropdownOptionClick, handleSelectOption]);\n\n const effectiveItems: DropdownOption[] =\n filteredOptions.length > 0\n ? filteredOptions\n : allowCustomTags && inputValue.trim()\n ? [{ id: ADD_CUSTOM_TAG_VALUE, label: `Add \"${inputValue.trim()}\"`, value: ADD_CUSTOM_TAG_VALUE }]\n : [];\n\n // Inject sentinel so arrow keys can reach \"No options found\" when the list is truly empty\n const showEmptyState = effectiveItems.length === 0 && isDropdownOpen;\n const comboboxItems: DropdownOption[] = showEmptyState ? [NO_RESULTS_SENTINEL] : effectiveItems;\n\n // Combobox hook for keyboard navigation and ARIA\n const {\n containerProps,\n inputProps: comboboxInputProps,\n listboxProps,\n getOptionProps,\n highlightedIndex,\n setHighlightedIndex,\n isKeyboardFocused\n } = useCombobox({\n items: comboboxItems,\n isOpen: isDropdownOpen,\n onOpenChange: setIsDropdownOpen,\n onSelect: handleSelectFromDropdown,\n listboxId,\n hasItems: comboboxItems.length > 0,\n keepHighlightOnSelect: isMultiSelect,\n closeOnTab: type !== 'multi-select',\n isItemDisabled: isNoResultsSentinel\n });\n\n const getHighlightClass = (isHighlighted: boolean) =>\n isHighlighted ? `highlighted${isKeyboardFocused ? ' keyboard-highlight' : ''}` : '';\n\n useEffect(() => {\n if (applyClickedRef.current) {\n applyClickedRef.current = false;\n return;\n }\n setTags(initValues(value || []));\n }, [value, options, isDropdownOpen]);\n\n\n useEffect(() => {\n // const isInputEmpty = !inputValue.trim();\n const filtered = options.filter(option =>\n option.label.toLowerCase().includes(inputValue.toLowerCase()) ||\n option.value.toLowerCase().includes(inputValue.toLowerCase())\n );\n setFilteredOptions(filtered);\n }, [inputValue, options]);\n\n // Announce empty state for screen readers — only when arrow keys haven't reached it yet.\n // Once highlighted (aria-activedescendant), the screen reader reads it directly.\n useEffect(() => {\n if (isDropdownOpen && effectiveItems.length === 0 && inputValue.trim() && highlightedIndex === -1) {\n announce(noOptionsMessage, { assertiveness: 'polite', batchId: 'dropdown-input-tags-empty-state', delay: 300 });\n }\n }, [effectiveItems.length, isDropdownOpen, inputValue, highlightedIndex]);\n\n const handleRemoveTag = (indexToRemove: number) => {\n if (disabled) return;\n \n const newTags = tags.filter((_, index) => index !== indexToRemove);\n setTags(newTags);\n \n //in multiselect if tag removed while dorpdownopen, do not call onchange\n if(!isMultiSelect || isMultiSelectWithoutCTA ||(isMultiSelect && !isDropdownOpen)) {\n onChange?.(newTags.map(tag => tag.value));\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n // Handle Backspace to remove last tag (preserve existing behavior)\n if (e.key === 'Backspace' && inputValue === \"\" && tags.length > 0) {\n e.preventDefault();\n const newTags = tags.slice(0, -1);\n setTags(newTags);\n onChange?.(newTags.map(tag => tag.value));\n return;\n }\n\n // Handle Enter for custom tags when no options match\n if (e.key === 'Enter' && inputValue.trim() && filteredOptions.length === 0 && allowCustomTags) {\n e.preventDefault();\n const newTags = [...tags];\n if (!newTags.some(tag => tag.value === inputValue.trim())) {\n newTags.push({ label: inputValue.trim(), value: inputValue.trim() });\n setTags(newTags);\n onChange?.(newTags.map(tag => tag.value));\n }\n setInputValue('');\n setHighlightedIndex(-1);\n setIsDropdownOpen(false);\n return;\n }\n\n // Let combobox hook handle all other keyboard events (Arrow keys, Enter, Escape, etc.)\n comboboxInputProps.onKeyDown(e);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n const newValue = e.target.value;\n setInputValue(newValue);\n setHighlightedIndex(-1); // Reset highlighted index when user types\n \n if (newValue.trim() && !isDropdownOpen) {\n setIsDropdownOpen(true);\n }\n };\n\n const handleInputFocus = () => {\n if (disabled) return;\n\n if (inputValue.trim() || options.length > 0) {\n setIsDropdownOpen(true);\n }\n };\n\n const handleInputContainerClick = (e: React.MouseEvent) => {\n if (disabled) return;\n\n e.stopPropagation();\n inputRef.current?.focus();\n if (!isDropdownOpen && (inputValue.trim() || options.length > 0)) {\n setIsDropdownOpen(true);\n }\n };\n\n const handlePopoverWrapperClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n \n const target = e.target as HTMLElement;\n const isInputArea = target.closest('.input-with-tags-container');\n if (isInputArea) {\n e.stopPropagation();\n }\n };\n\n const toggleDropdown = () => {\n if (disabled) return;\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n useImperativeHandle(ref, () => ({ toggleDropdown }), []);\n\n const defaultRenderOption = (\n option: DropdownOption,\n index: number,\n onSelect: (option: DropdownOption) => void,\n disabled: boolean\n ) => {\n const isSelected = tags.some((tag) => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isSelected);\n \n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option ${getHighlightClass(isHighlighted)}`}\n onClick={() => !disabled && onSelect(option)}\n onMouseEnter={() => setHighlightedIndex(index)}\n data-automation-id={`${automationId}-option-${option.id}`}\n >\n <span className=\"option-label\">{option.label}</span>\n {option.value !== option.label && <span className=\"option-value\">{option.value}</span>}\n </div>\n );\n };\n const handleApplySelectedDropDownValues = () => {\n applyClickedRef.current = true;\n const newTagValues = tags.map(tag => tag.value);\n onChange?.(newTagValues);\n setIsDropdownOpen(false);\n };\n\n const clearSelectedDropDownValues = () => {\n setTags([]);\n };\n const multiSelectRenderOption = (option: DropdownOption, index: number) => {\n const isOptionSelected = tags.some(tag => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isOptionSelected);\n \n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option dropdown-with-input-tags-multi-select-option ${getHighlightClass(isHighlighted)}`}\n aria-checked={isOptionSelected}\n onClick={() => {\n if (disabled) return;\n handleMultiSelectDropdownOptionClick(!isOptionSelected, option);\n inputRef.current?.focus();\n }}\n onMouseEnter={() => setHighlightedIndex(index)}\n data-automation-id={`${automationId}-option-${option.id}`}\n >\n <Checkbox\n automationId=\"checkbox\"\n className=\"checkbox\"\n checked={isOptionSelected}\n onChange={() => {}}\n label={option.label}\n tabIndex={-1}\n />\n </div>\n );\n };\n\n const multiSelectRenderCTAs = () => {\n return (\n <div\n className=\"dropdown-with-input-tags-ctas-container\"\n onKeyDown={(e) => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Home' || e.key === 'End') {\n e.stopPropagation();\n }\n }}\n >\n <Button label=\"Clear\" type=\"link\" size=\"sm\" onClick={clearSelectedDropDownValues} automationId={`${automationId}-clear-button`} />\n <Button label=\"Apply\" type=\"primary\" size=\"sm\" onClick={handleApplySelectedDropDownValues} automationId={`${automationId}-apply-button`} />\n </div>\n );\n };\n\n \n\n return (\n <div\n className={`dropdown-with-input-tags-wrapper ${className} ${disabled ? 'disabled-wrapper' : ''}`}\n data-automation-id={automationId}\n {...containerProps}\n >\n {label && <label id={labelId} className=\"dropdown-with-input-tags-label\">{label}</label>}\n\n <div onClick={handlePopoverWrapperClick}>\n <Popover\n ref={popoverRef}\n className=\"dropdown-with-input-tags-popover\"\n contentWidth=\"full\"\n position=\"bottom-left\"\n isPopoverOpen={!disabled && isDropdownOpen}\n onPopoverToggle={disabled ? () => {} : setIsDropdownOpen}\n disableClickToggle={true}\n isWithPortal={isWithPortal}\n renderPopoverContents={({ closePopoverCb }) => (\n <>\n <div\n {...listboxProps}\n className=\"dropdown-with-input-tags-content\"\n {...(isMultiSelect && { 'aria-multiselectable': 'true' })}\n >\n {effectiveItems.length > 0 ? (\n effectiveItems.map((option, index) => {\n if (option.value === ADD_CUSTOM_TAG_VALUE) {\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, false);\n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option dropdown-with-input-tags-custom-option ${getHighlightClass(isHighlighted)}`}\n onClick={() => {\n if (disabled) return;\n handleSelectFromDropdown(option);\n closePopoverCb();\n }}\n onMouseEnter={() => setHighlightedIndex(index)}\n >\n Add \"{inputValue.trim()}\"\n </div>\n );\n }\n if (isMultiSelect) {\n return multiSelectRenderOption(option, index);\n }\n \n const isSelected = tags.some((tag) => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isSelected);\n const optionPropsWithHandlers = {\n ...optionProps,\n onMouseEnter: () => setHighlightedIndex(index),\n className: `dropdown-with-input-tags-option ${getHighlightClass(isHighlighted)}`\n };\n \n return renderOption\n ? renderOption(option, optionPropsWithHandlers, handleSelectOption)\n : defaultRenderOption(option, index, handleSelectOption, disabled);\n })\n ) : (\n <div\n {...getOptionProps(0, false)}\n className={`dropdown-with-input-tags-no-options ${getHighlightClass(highlightedIndex === 0)}`}\n >\n <div className=\"dropdown-with-input-tags-no-options-text\">\n {noOptionsMessage}\n </div>\n </div>\n )}\n </div>\n {isMultiSelect && !isMultiSelectWithoutCTA && multiSelectRenderCTAs()}\n </>\n )}\n renderPopoverSrcElement={() => (\n <div className=\"dropdown-with-input-tags-input-container\">\n <div\n className={`input-with-tags-container ${disabled ? 'disabled-input-with-tags-container' : ''} ${isKeyboardFocused ? 'keyboard-focused' : ''}`}\n onClick={handleInputContainerClick}\n onKeyDown={(e) => {\n if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {\n inputRef.current?.focus();\n }\n }}\n >\n {tags.map((tag, index) => (\n <span key={index} className=\"tag-in-inputwithtags\">\n {tag[displayTagBy]}\n {!disabled && (\n <Icon\n name=\"close\"\n className=\"close-icon-in-inputwithtags\"\n ariaLabel={`Remove tag ${tag[displayTagBy]}`}\n onClick={() => handleRemoveTag(index)}\n shouldStopPropagation\n />\n )}\n </span>\n ))}\n {(showInput || !tags.length || isMultiSelect) && (\n <input\n ref={inputRef}\n {...comboboxInputProps}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleInputFocus}\n placeholder={tags.length === 0 ? placeholder : ''}\n className={`input-with-tags-input${!showInput && tags.length > 0 && !inputValue ? ' sr-only' : ''}`}\n disabled={disabled}\n {...getA11yNameAttributes({\n ariaLabel: ariaLabel || (!label ? 'Search and select options' : undefined),\n ariaLabelledBy,\n internalLabelId: label ? labelId : undefined,\n ariaDescribedBy\n })}\n />\n )}\n </div>\n </div>\n )}\n automationId={automationId}\n popoverContentAutomationId={`${automationId}-content`}\n />\n </div>\n </div>\n );\n }\n); "],"names":["DropdownWithInputTags","value","onChange","placeholder","className","options","renderOption","label","ariaLabel","ariaLabelledBy","ariaDescribedBy","automationId","noOptionsMessage","allowCustomTags","disabled","type","showInput","displayTagBy","isWithPortal","ref","initValues","values","map","val","found","find","opt","tags","setTags","useState","inputValue","setInputValue","filteredOptions","setFilteredOptions","isDropdownOpen","setIsDropdownOpen","popoverRef","useRef","inputRef","applyClickedRef","isMultiSelectWithoutCTA","isMultiSelect","listboxId","useStableId","labelId","handleSelectOption","useCallback","option","newTags","some","tag","push","handleMultiSelectDropdownOptionClick","isSelected","newSelectedTags","filter","current","ADD_CUSTOM_TAG_VALUE","NO_RESULTS_VALUE","NO_RESULTS_SENTINEL","id","__noResults","isNoResultsSentinel","item","handleSelectFromDropdown","trimmed","trim","effectiveItems","length","comboboxItems","containerProps","inputProps","comboboxInputProps","listboxProps","getOptionProps","highlightedIndex","setHighlightedIndex","isKeyboardFocused","useCombobox","items","isOpen","onOpenChange","onSelect","hasItems","keepHighlightOnSelect","closeOnTab","isItemDisabled","getHighlightClass","isHighlighted","useEffect","filtered","toLowerCase","includes","announce","assertiveness","batchId","delay","handleRemoveTag","indexToRemove","_","index","handleKeyDown","e","key","preventDefault","slice","onKeyDown","handleInputChange","newValue","target","handleInputFocus","handleInputContainerClick","stopPropagation","focus","handlePopoverWrapperClick","closest","toggleDropdown","useImperativeHandle","defaultRenderOption","optionProps","React","createElement","_extends","onClick","onMouseEnter","handleApplySelectedDropDownValues","newTagValues","clearSelectedDropDownValues","multiSelectRenderOption","isOptionSelected","Checkbox","checked","tabIndex","multiSelectRenderCTAs","Button","size","Popover","contentWidth","position","isPopoverOpen","onPopoverToggle","disableClickToggle","renderPopoverContents","closePopoverCb","Fragment","optionPropsWithHandlers","renderPopoverSrcElement","ctrlKey","metaKey","altKey","Icon","name","shouldStopPropagation","onFocus","getA11yNameAttributes","undefined","internalLabelId","popoverContentAutomationId"],"mappings":"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"}
1
+ {"version":3,"file":"index38.js","sources":["../src/components/DropdownWithInputTags/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, forwardRef, ForwardedRef, useImperativeHandle, KeyboardEvent, useCallback } from 'react';\nimport { Popover, PopoverHandle } from '../Popover';\nimport { Icon } from '../Icon';\nimport { Checkbox } from '../Checkbox';\nimport { Button } from '../Button';\nimport { useCombobox, getA11yNameAttributes } from '../../utils/a11y';\nimport { announce } from '../../utils/a11y/liveAnnouncer/LiveAnnouncer';\nimport { useStableId } from '../../utils/useStableId';\nimport './styles.scss';\n\nexport interface DropdownOption {\n id: string | number;\n label: string;\n value: string;\n [key: string]: any; // Allow additional properties\n}\n\nexport interface DropdownWithInputTagsHandle {\n toggleDropdown: () => void;\n}\n\nexport interface DropdownWithInputTagsProps {\n value: string[];\n onChange?: (tags: string[]) => void;\n placeholder?: string;\n className?: string;\n options?: DropdownOption[];\n renderOption?: (\n option: DropdownOption,\n props: {\n id: string;\n role: 'option';\n 'aria-selected'?: boolean;\n 'aria-disabled'?: true;\n onMouseEnter: () => void;\n className: string;\n },\n onSelect: (option: DropdownOption) => void\n ) => React.ReactNode;\n label?: string;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaDescribedBy?: string;\n automationId?: string;\n noOptionsMessage?: string;\n allowCustomTags?: boolean;\n disabled?: boolean;\n type?: 'select' | 'multi-select' |'multi-select-without-cta';\n showInput?: boolean;\n displayTagBy?: 'label' | 'value';\n isWithPortal?: boolean;\n}\n\nexport const DropdownWithInputTags = forwardRef<DropdownWithInputTagsHandle, DropdownWithInputTagsProps>(\n (\n {\n value,\n onChange,\n placeholder = \"Type to search or add custom tags...\",\n className = '',\n options = [],\n renderOption,\n label,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n automationId = '',\n noOptionsMessage = \"No options found\",\n allowCustomTags = true,\n disabled = false,\n type = 'select',\n showInput = true,\n displayTagBy = 'label',\n isWithPortal = false\n },\n ref: ForwardedRef<DropdownWithInputTagsHandle>\n ) => {\n // Define initValues at the top, right after props\n const initValues = (values: string[]) => {\n return values.map(val => {\n const found = options.find(opt => opt.value === val);\n return found ? { label: found.label, value: found.value } : { label: val, value: val };\n });\n };\n\n // Now use it in useState\n const [tags, setTags] = useState<{ label: string; value: string }[]>(() => {\n return initValues(value || []);\n });\n const [inputValue, setInputValue] = useState('');\n const [filteredOptions, setFilteredOptions] = useState<DropdownOption[]>(options);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const popoverRef = useRef<PopoverHandle>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const applyClickedRef = useRef<boolean>(false);\n \n const isMultiSelectWithoutCTA = type === 'multi-select-without-cta';\n const isMultiSelect = type === 'multi-select' ||isMultiSelectWithoutCTA;\n\n // Generate stable ID for listbox\n const listboxId = useStableId(automationId, 'dropdown-input-tags-listbox');\n const labelId = useStableId(automationId ? `${automationId}-label` : undefined, 'dropdown-input-tags-label');\n\n const handleSelectOption = useCallback(\n (option: DropdownOption) => {\n if (disabled) return;\n\n const newTags = [...tags];\n if (!newTags.some((tag) => tag.value === option.value)) {\n newTags.push({ label: option.label, value: option.value });\n setTags(newTags);\n onChange?.(newTags.map((tag) => tag.value));\n }\n setInputValue('');\n setIsDropdownOpen(false);\n },\n [disabled, tags, onChange]\n );\n\n const handleMultiSelectDropdownOptionClick = useCallback(\n (isSelected: boolean, option: DropdownOption) => {\n let newSelectedTags: { label: string; value: string }[] = [];\n if (isSelected) {\n newSelectedTags = [...tags, { label: option.label, value: option.value }];\n } else {\n newSelectedTags = tags.filter((tag) => tag.value !== option.value);\n }\n setTags(newSelectedTags);\n setInputValue('');\n if (isMultiSelectWithoutCTA) {\n applyClickedRef.current = true;\n onChange?.(newSelectedTags.map((tag) => tag.value));\n }\n },\n [tags, isMultiSelectWithoutCTA, onChange]\n );\n\n const ADD_CUSTOM_TAG_VALUE = '__add_custom_tag__';\n const NO_RESULTS_VALUE = '__no_results__';\n const NO_RESULTS_SENTINEL: DropdownOption = { id: NO_RESULTS_VALUE, label: noOptionsMessage, value: NO_RESULTS_VALUE, __noResults: true };\n const isNoResultsSentinel = (item: DropdownOption) => !!item?.__noResults;\n\n const handleSelectFromDropdown = useCallback((option: DropdownOption) => {\n if (disabled) return;\n\n if (option.value === ADD_CUSTOM_TAG_VALUE) {\n const trimmed = inputValue.trim();\n if (!trimmed) return;\n const newTags = [...tags];\n if (!newTags.some((tag) => tag.value === trimmed)) {\n newTags.push({ label: trimmed, value: trimmed });\n setTags(newTags);\n onChange?.(newTags.map((tag) => tag.value));\n }\n setInputValue('');\n setIsDropdownOpen(false);\n return;\n }\n\n if (isMultiSelect) {\n const isSelected = tags.some(tag => tag.value === option.value);\n handleMultiSelectDropdownOptionClick(!isSelected, option);\n } else {\n handleSelectOption(option);\n }\n }, [disabled, isMultiSelect, tags, inputValue, onChange, handleMultiSelectDropdownOptionClick, handleSelectOption]);\n\n const effectiveItems: DropdownOption[] =\n filteredOptions.length > 0\n ? filteredOptions\n : allowCustomTags && inputValue.trim()\n ? [{ id: ADD_CUSTOM_TAG_VALUE, label: `Add \"${inputValue.trim()}\"`, value: ADD_CUSTOM_TAG_VALUE }]\n : [];\n\n // Inject sentinel so arrow keys can reach \"No options found\" when the list is truly empty\n const showEmptyState = effectiveItems.length === 0 && isDropdownOpen;\n const comboboxItems: DropdownOption[] = showEmptyState ? [NO_RESULTS_SENTINEL] : effectiveItems;\n\n // Combobox hook for keyboard navigation and ARIA\n const {\n containerProps,\n inputProps: comboboxInputProps,\n listboxProps,\n getOptionProps,\n highlightedIndex,\n setHighlightedIndex,\n isKeyboardFocused\n } = useCombobox({\n items: comboboxItems,\n isOpen: isDropdownOpen,\n onOpenChange: setIsDropdownOpen,\n onSelect: handleSelectFromDropdown,\n listboxId,\n hasItems: comboboxItems.length > 0,\n keepHighlightOnSelect: isMultiSelect,\n closeOnTab: type !== 'multi-select',\n isItemDisabled: isNoResultsSentinel\n });\n\n const getHighlightClass = (isHighlighted: boolean) =>\n isHighlighted ? `highlighted${isKeyboardFocused ? ' keyboard-highlight' : ''}` : '';\n\n useEffect(() => {\n if (applyClickedRef.current) {\n applyClickedRef.current = false;\n return;\n }\n setTags(initValues(value || []));\n }, [value, options, isDropdownOpen]);\n\n\n useEffect(() => {\n // const isInputEmpty = !inputValue.trim();\n const filtered = options.filter(option =>\n option.label.toLowerCase().includes(inputValue.toLowerCase()) ||\n option.value.toLowerCase().includes(inputValue.toLowerCase())\n );\n setFilteredOptions(filtered);\n }, [inputValue, options]);\n\n // Announce empty state for screen readers — only when arrow keys haven't reached it yet.\n // Once highlighted (aria-activedescendant), the screen reader reads it directly.\n useEffect(() => {\n if (isDropdownOpen && effectiveItems.length === 0 && inputValue.trim() && highlightedIndex === -1) {\n announce(noOptionsMessage, { assertiveness: 'polite', batchId: 'dropdown-input-tags-empty-state', delay: 300 });\n }\n }, [effectiveItems.length, isDropdownOpen, inputValue, highlightedIndex]);\n\n const handleRemoveTag = (indexToRemove: number) => {\n if (disabled) return;\n \n const newTags = tags.filter((_, index) => index !== indexToRemove);\n setTags(newTags);\n \n //in multiselect if tag removed while dorpdownopen, do not call onchange\n if(!isMultiSelect || isMultiSelectWithoutCTA ||(isMultiSelect && !isDropdownOpen)) {\n onChange?.(newTags.map(tag => tag.value));\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n // Handle Backspace to remove last tag (preserve existing behavior)\n if (e.key === 'Backspace' && inputValue === \"\" && tags.length > 0) {\n e.preventDefault();\n const newTags = tags.slice(0, -1);\n setTags(newTags);\n onChange?.(newTags.map(tag => tag.value));\n return;\n }\n\n // Handle Enter for custom tags when no options match\n if (e.key === 'Enter' && inputValue.trim() && filteredOptions.length === 0 && allowCustomTags) {\n e.preventDefault();\n const newTags = [...tags];\n if (!newTags.some(tag => tag.value === inputValue.trim())) {\n newTags.push({ label: inputValue.trim(), value: inputValue.trim() });\n setTags(newTags);\n onChange?.(newTags.map(tag => tag.value));\n }\n setInputValue('');\n setHighlightedIndex(-1);\n setIsDropdownOpen(false);\n return;\n }\n\n // Let combobox hook handle all other keyboard events (Arrow keys, Enter, Escape, etc.)\n comboboxInputProps.onKeyDown(e);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n const newValue = e.target.value;\n setInputValue(newValue);\n setHighlightedIndex(-1); // Reset highlighted index when user types\n \n if (newValue.trim() && !isDropdownOpen) {\n setIsDropdownOpen(true);\n }\n };\n\n const handleInputFocus = () => {\n if (disabled) return;\n\n if (inputValue.trim() || options.length > 0) {\n setIsDropdownOpen(true);\n }\n };\n\n const handleInputContainerClick = (e: React.MouseEvent) => {\n if (disabled) return;\n\n e.stopPropagation();\n inputRef.current?.focus();\n if (!isDropdownOpen && (inputValue.trim() || options.length > 0)) {\n setIsDropdownOpen(true);\n }\n };\n\n const handlePopoverWrapperClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n \n const target = e.target as HTMLElement;\n const isInputArea = target.closest('.input-with-tags-container');\n if (isInputArea) {\n e.stopPropagation();\n }\n };\n\n const toggleDropdown = () => {\n if (disabled) return;\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n useImperativeHandle(ref, () => ({ toggleDropdown }), []);\n\n const defaultRenderOption = (\n option: DropdownOption,\n index: number,\n onSelect: (option: DropdownOption) => void,\n disabled: boolean\n ) => {\n const isSelected = tags.some((tag) => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isSelected);\n \n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option ${getHighlightClass(isHighlighted)}`}\n onClick={() => !disabled && onSelect(option)}\n onMouseEnter={() => setHighlightedIndex(index)}\n data-automation-id={`${automationId}-option-${option.id}`}\n >\n <span className=\"option-label\">{option.label}</span>\n {option.value !== option.label && <span className=\"option-value\">{option.value}</span>}\n </div>\n );\n };\n const handleApplySelectedDropDownValues = () => {\n applyClickedRef.current = true;\n const newTagValues = tags.map(tag => tag.value);\n onChange?.(newTagValues);\n setIsDropdownOpen(false);\n };\n\n const clearSelectedDropDownValues = () => {\n setTags([]);\n };\n const multiSelectRenderOption = (option: DropdownOption, index: number) => {\n const isOptionSelected = tags.some(tag => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isOptionSelected);\n \n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option dropdown-with-input-tags-multi-select-option ${getHighlightClass(isHighlighted)}`}\n aria-checked={isOptionSelected}\n onClick={() => {\n if (disabled) return;\n handleMultiSelectDropdownOptionClick(!isOptionSelected, option);\n inputRef.current?.focus();\n }}\n onMouseEnter={() => setHighlightedIndex(index)}\n data-automation-id={`${automationId}-option-${option.id}`}\n >\n <Checkbox\n automationId=\"checkbox\"\n className=\"checkbox\"\n checked={isOptionSelected}\n onChange={() => {}}\n label={option.label}\n tabIndex={-1}\n />\n </div>\n );\n };\n\n const multiSelectRenderCTAs = () => {\n return (\n <div\n className=\"dropdown-with-input-tags-ctas-container\"\n onKeyDown={(e) => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Home' || e.key === 'End') {\n e.stopPropagation();\n }\n }}\n >\n <Button label=\"Clear\" type=\"link\" size=\"sm\" onClick={clearSelectedDropDownValues} automationId={`${automationId}-clear-button`} />\n <Button label=\"Apply\" type=\"primary\" size=\"sm\" onClick={handleApplySelectedDropDownValues} automationId={`${automationId}-apply-button`} />\n </div>\n );\n };\n\n \n\n return (\n <div\n className={`dropdown-with-input-tags-wrapper ${className} ${disabled ? 'disabled-wrapper' : ''}`}\n data-automation-id={automationId}\n {...containerProps}\n >\n {label && <label id={labelId} className=\"dropdown-with-input-tags-label\">{label}</label>}\n\n <div onClick={handlePopoverWrapperClick}>\n <Popover\n ref={popoverRef}\n className=\"dropdown-with-input-tags-popover\"\n contentWidth=\"full\"\n position=\"bottom-left\"\n isPopoverOpen={!disabled && isDropdownOpen}\n onPopoverToggle={disabled ? () => {} : setIsDropdownOpen}\n disableClickToggle={true}\n isWithPortal={isWithPortal}\n renderPopoverContents={({ closePopoverCb }) => (\n <>\n <div\n {...listboxProps}\n className=\"dropdown-with-input-tags-content\"\n {...(isMultiSelect && { 'aria-multiselectable': 'true' })}\n >\n {effectiveItems.length > 0 ? (\n effectiveItems.map((option, index) => {\n if (option.value === ADD_CUSTOM_TAG_VALUE) {\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, false);\n return (\n <div\n key={option.id}\n {...optionProps}\n className={`dropdown-with-input-tags-option dropdown-with-input-tags-custom-option ${getHighlightClass(isHighlighted)}`}\n onClick={() => {\n if (disabled) return;\n handleSelectFromDropdown(option);\n closePopoverCb();\n }}\n onMouseEnter={() => setHighlightedIndex(index)}\n >\n Add \"{inputValue.trim()}\"\n </div>\n );\n }\n if (isMultiSelect) {\n return multiSelectRenderOption(option, index);\n }\n \n const isSelected = tags.some((tag) => tag.value === option.value);\n const isHighlighted = highlightedIndex === index;\n const optionProps = getOptionProps(index, isSelected);\n const optionPropsWithHandlers = {\n ...optionProps,\n onMouseEnter: () => setHighlightedIndex(index),\n className: `dropdown-with-input-tags-option ${getHighlightClass(isHighlighted)}`\n };\n \n return renderOption\n ? renderOption(option, optionPropsWithHandlers, handleSelectOption)\n : defaultRenderOption(option, index, handleSelectOption, disabled);\n })\n ) : (\n <div\n {...getOptionProps(0, false)}\n className={`dropdown-with-input-tags-no-options ${getHighlightClass(highlightedIndex === 0)}`}\n >\n <div className=\"dropdown-with-input-tags-no-options-text\">\n {noOptionsMessage}\n </div>\n </div>\n )}\n </div>\n {isMultiSelect && !isMultiSelectWithoutCTA && multiSelectRenderCTAs()}\n </>\n )}\n renderPopoverSrcElement={() => (\n <div className=\"dropdown-with-input-tags-input-container\">\n <div\n className={`input-with-tags-container ${disabled ? 'disabled-input-with-tags-container' : ''} ${isKeyboardFocused ? 'keyboard-focused' : ''}`}\n onClick={handleInputContainerClick}\n onKeyDown={(e) => {\n if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {\n inputRef.current?.focus();\n }\n }}\n >\n {tags.map((tag, index) => (\n <span key={index} className=\"tag-in-inputwithtags\">\n {tag[displayTagBy]}\n {!disabled && (\n <Icon\n name=\"close\"\n className=\"close-icon-in-inputwithtags\"\n ariaLabel={`Remove tag ${tag[displayTagBy]}`}\n onClick={() => handleRemoveTag(index)}\n shouldStopPropagation\n />\n )}\n </span>\n ))}\n {(showInput || !tags.length || isMultiSelect) && (\n <input\n ref={inputRef}\n {...comboboxInputProps}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleInputFocus}\n placeholder={tags.length === 0 ? placeholder : ''}\n className={`input-with-tags-input${!showInput && tags.length > 0 && !inputValue ? ' sr-only' : ''}`}\n disabled={disabled}\n {...getA11yNameAttributes({\n ariaLabel: ariaLabel || (!label ? 'Search and select options' : undefined),\n ariaLabelledBy,\n internalLabelId: label ? labelId : undefined,\n ariaDescribedBy\n })}\n />\n )}\n </div>\n </div>\n )}\n automationId={automationId}\n popoverContentAutomationId={`${automationId}-content`}\n />\n </div>\n </div>\n );\n }\n); "],"names":["DropdownWithInputTags","value","onChange","placeholder","className","options","renderOption","label","ariaLabel","ariaLabelledBy","ariaDescribedBy","automationId","noOptionsMessage","allowCustomTags","disabled","type","showInput","displayTagBy","isWithPortal","ref","initValues","values","map","val","found","find","opt","tags","setTags","useState","inputValue","setInputValue","filteredOptions","setFilteredOptions","isDropdownOpen","setIsDropdownOpen","popoverRef","useRef","inputRef","applyClickedRef","isMultiSelectWithoutCTA","isMultiSelect","listboxId","useStableId","labelId","undefined","handleSelectOption","useCallback","option","newTags","some","tag","push","handleMultiSelectDropdownOptionClick","isSelected","newSelectedTags","filter","current","ADD_CUSTOM_TAG_VALUE","NO_RESULTS_VALUE","NO_RESULTS_SENTINEL","id","__noResults","isNoResultsSentinel","item","handleSelectFromDropdown","trimmed","trim","effectiveItems","length","comboboxItems","containerProps","inputProps","comboboxInputProps","listboxProps","getOptionProps","highlightedIndex","setHighlightedIndex","isKeyboardFocused","useCombobox","items","isOpen","onOpenChange","onSelect","hasItems","keepHighlightOnSelect","closeOnTab","isItemDisabled","getHighlightClass","isHighlighted","useEffect","filtered","toLowerCase","includes","announce","assertiveness","batchId","delay","handleRemoveTag","indexToRemove","_","index","handleKeyDown","e","key","preventDefault","slice","onKeyDown","handleInputChange","newValue","target","handleInputFocus","handleInputContainerClick","stopPropagation","focus","handlePopoverWrapperClick","closest","toggleDropdown","useImperativeHandle","defaultRenderOption","optionProps","React","createElement","_extends","onClick","onMouseEnter","handleApplySelectedDropDownValues","newTagValues","clearSelectedDropDownValues","multiSelectRenderOption","isOptionSelected","Checkbox","checked","tabIndex","multiSelectRenderCTAs","Button","size","Popover","contentWidth","position","isPopoverOpen","onPopoverToggle","disableClickToggle","renderPopoverContents","closePopoverCb","Fragment","optionPropsWithHandlers","renderPopoverSrcElement","ctrlKey","metaKey","altKey","Icon","name","shouldStopPropagation","onFocus","getA11yNameAttributes","internalLabelId","popoverContentAutomationId"],"mappings":"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"}