@tedi-design-system/react 19.1.2-rc.3 → 19.2.0-rc.1

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.
Files changed (33) hide show
  1. package/bundle-stats.html +1 -1
  2. package/index.css +1 -1
  3. package/package.json +1 -1
  4. package/src/tedi/components/form/multi-value-field/multi-value-field.cjs.js +1 -1
  5. package/src/tedi/components/form/multi-value-field/multi-value-field.d.ts +6 -0
  6. package/src/tedi/components/form/multi-value-field/multi-value-field.es.js +126 -117
  7. package/src/tedi/components/form/multi-value-field/multi-value-field.module.scss.cjs.js +1 -1
  8. package/src/tedi/components/form/multi-value-field/multi-value-field.module.scss.es.js +2 -0
  9. package/src/tedi/components/form/select/components/select-clear-indicator.cjs.js +1 -1
  10. package/src/tedi/components/form/select/components/select-clear-indicator.es.js +21 -10
  11. package/src/tedi/components/form/select/select.cjs.js +1 -1
  12. package/src/tedi/components/form/select/select.d.ts +6 -0
  13. package/src/tedi/components/form/select/select.es.js +173 -171
  14. package/src/tedi/components/form/select/select.module.scss.cjs.js +1 -1
  15. package/src/tedi/components/form/select/select.module.scss.es.js +2 -1
  16. package/src/tedi/components/form/textarea/textarea.d.ts +1 -1
  17. package/src/tedi/components/form/textfield/textfield.cjs.js +1 -1
  18. package/src/tedi/components/form/textfield/textfield.d.ts +6 -0
  19. package/src/tedi/components/form/textfield/textfield.es.js +86 -84
  20. package/src/tedi/components/form/textfield/textfield.module.scss.cjs.js +1 -1
  21. package/src/tedi/components/form/textfield/textfield.module.scss.es.js +2 -0
  22. package/src/tedi/components/navigation/breadcrumbs/breadcrumbs.cjs.js +1 -1
  23. package/src/tedi/components/navigation/breadcrumbs/breadcrumbs.es.js +19 -10
  24. package/src/tedi/components/navigation/breadcrumbs/breadcrumbs.module.scss.cjs.js +1 -1
  25. package/src/tedi/components/navigation/breadcrumbs/breadcrumbs.module.scss.es.js +2 -1
  26. package/src/tedi/components/overlays/dropdown/dropdown-context.d.ts +8 -0
  27. package/src/tedi/components/overlays/dropdown/dropdown-item/dropdown-item.cjs.js +1 -1
  28. package/src/tedi/components/overlays/dropdown/dropdown-item/dropdown-item.es.js +46 -46
  29. package/src/tedi/components/overlays/dropdown/dropdown-trigger/dropdown-trigger.cjs.js +1 -1
  30. package/src/tedi/components/overlays/dropdown/dropdown-trigger/dropdown-trigger.es.js +7 -6
  31. package/src/tedi/components/overlays/dropdown/dropdown.cjs.js +1 -1
  32. package/src/tedi/components/overlays/dropdown/dropdown.d.ts +8 -0
  33. package/src/tedi/components/overlays/dropdown/dropdown.es.js +95 -87
@@ -1,109 +1,110 @@
1
- import { jsx as L, jsxs as J } from "react/jsx-runtime";
2
- import Q from "../../../../../external/classnames/index.es.js";
3
- import r, { forwardRef as nt } from "react";
4
- import lt from "../../../../../external/react-select/dist/react-select.esm.es.js";
5
- import st from "../../../../../external/react-select/async/dist/react-select-async.esm.es.js";
6
- import { FeedbackText as rt } from "../feedback-text/feedback-text.es.js";
7
- import { FormLabel as at } from "../form-label/form-label.es.js";
8
- import { useOptionalInputGroup as it } from "../input-group/input-group.es.js";
9
- import ct from "../input-group/input-group.module.scss.es.js";
10
- import { SELECT_ALL_VALUE as M, GROUP_OPTION_PREFIX as ut, areAllSelected as Y, getEnabledOptions as Z, isGroupSentinel as ee } from "./components/select-bulk-helpers.es.js";
11
- import { SelectClearIndicator as dt } from "./components/select-clear-indicator.es.js";
12
- import { SelectControl as pt } from "./components/select-control.es.js";
1
+ import { jsx as L, jsxs as Q } from "react/jsx-runtime";
2
+ import Y from "../../../../../external/classnames/index.es.js";
3
+ import r, { forwardRef as lt } from "react";
4
+ import st from "../../../../../external/react-select/dist/react-select.esm.es.js";
5
+ import rt from "../../../../../external/react-select/async/dist/react-select-async.esm.es.js";
6
+ import { FeedbackText as at } from "../feedback-text/feedback-text.es.js";
7
+ import { FormLabel as it } from "../form-label/form-label.es.js";
8
+ import { useOptionalInputGroup as ct } from "../input-group/input-group.es.js";
9
+ import ut from "../input-group/input-group.module.scss.es.js";
10
+ import { SELECT_ALL_VALUE as M, GROUP_OPTION_PREFIX as dt, areAllSelected as Z, getEnabledOptions as ee, isGroupSentinel as te } from "./components/select-bulk-helpers.es.js";
11
+ import { SelectClearIndicator as pt } from "./components/select-clear-indicator.es.js";
12
+ import { SelectControl as ft } from "./components/select-control.es.js";
13
13
  import { SelectDropDownIndicator as mt } from "./components/select-dropdown-indicator.es.js";
14
- import { SelectGroup as ft } from "./components/select-group.es.js";
15
- import { SelectGroupHeading as gt } from "./components/select-group-heading.es.js";
16
- import { SelectIndicatorsContainer as St } from "./components/select-indicators-container.es.js";
17
- import { SelectInput as bt } from "./components/select-input.es.js";
18
- import { SelectLoadingIndicator as yt } from "./components/select-loading-indicator.es.js";
19
- import { SelectMenu as Mt } from "./components/select-menu.es.js";
20
- import { SelectMenuList as vt } from "./components/select-menu-list.es.js";
21
- import { SelectMenuPortal as ht } from "./components/select-menu-portal.es.js";
22
- import { SelectMultiValue as It } from "./components/select-multi-value.es.js";
23
- import { SelectMultiValueRemove as Ot } from "./components/select-multi-value-remove.es.js";
24
- import { SelectOption as Ct } from "./components/select-option.es.js";
25
- import { SelectSingleValue as wt } from "./components/select-single-value.es.js";
26
- import { SelectValueContainer as Lt } from "./components/select-value-container.es.js";
14
+ import { SelectGroup as gt } from "./components/select-group.es.js";
15
+ import { SelectGroupHeading as St } from "./components/select-group-heading.es.js";
16
+ import { SelectIndicatorsContainer as bt } from "./components/select-indicators-container.es.js";
17
+ import { SelectInput as yt } from "./components/select-input.es.js";
18
+ import { SelectLoadingIndicator as Mt } from "./components/select-loading-indicator.es.js";
19
+ import { SelectMenu as vt } from "./components/select-menu.es.js";
20
+ import { SelectMenuList as ht } from "./components/select-menu-list.es.js";
21
+ import { SelectMenuPortal as It } from "./components/select-menu-portal.es.js";
22
+ import { SelectMultiValue as Ot } from "./components/select-multi-value.es.js";
23
+ import { SelectMultiValueRemove as Ct } from "./components/select-multi-value-remove.es.js";
24
+ import { SelectOption as wt } from "./components/select-option.es.js";
25
+ import { SelectSingleValue as Lt } from "./components/select-single-value.es.js";
26
+ import { SelectValueContainer as Vt } from "./components/select-value-container.es.js";
27
27
  import d from "./select.module.scss.es.js";
28
- import { useLabels as Vt } from "../../../providers/label-provider/use-labels.es.js";
29
- const At = nt(
30
- (D, te) => {
31
- var X;
28
+ import { useLabels as At } from "../../../providers/label-provider/use-labels.es.js";
29
+ const _t = lt(
30
+ (D, oe) => {
31
+ var J;
32
32
  const {
33
33
  options: c,
34
- defaultOptions: oe,
35
- name: ne,
36
- iconName: le = "arrow_drop_down",
37
- label: se,
34
+ defaultOptions: ne,
35
+ name: le,
36
+ iconName: se = "arrow_drop_down",
37
+ label: re,
38
38
  required: N,
39
39
  value: P,
40
40
  defaultValue: T,
41
41
  tagsDirection: V = "stack",
42
42
  onChange: A,
43
- onInputChange: re,
44
- inputValue: ae,
45
- loadOptions: ie,
46
- isLoading: ce,
47
- openMenuOnFocus: ue = !1,
48
- openMenuOnClick: de = !0,
49
- tabSelectsValue: pe = !1,
43
+ onInputChange: ae,
44
+ inputValue: ie,
45
+ loadOptions: ce,
46
+ isLoading: ue,
47
+ openMenuOnFocus: de = !1,
48
+ openMenuOnClick: pe = !0,
49
+ tabSelectsValue: fe = !1,
50
50
  disabled: F = !1,
51
51
  className: me,
52
- hideLabel: fe = !1,
52
+ hideLabel: ge = !1,
53
53
  helper: a,
54
- placeholder: ge,
55
- invalid: Se,
56
- valid: be,
54
+ placeholder: Se,
55
+ invalid: be,
56
+ valid: ye,
57
57
  size: _,
58
- async: ye = !1,
59
- renderOption: Me,
58
+ async: Me = !1,
59
+ renderOption: ve,
60
60
  renderMessageListFooter: $,
61
- noOptionsMessage: ve,
62
- loadingMessage: he,
61
+ noOptionsMessage: he,
62
+ loadingMessage: Ie,
63
63
  multiple: v = !1,
64
64
  showSelectAll: x = !1,
65
65
  selectableGroups: E = !1,
66
- dropdownType: Ie = "menu",
67
- renderValue: Oe,
68
- closeMenuOnSelect: Ce = !v,
66
+ dropdownType: Oe = "menu",
67
+ renderValue: Ce,
68
+ closeMenuOnSelect: we = !v,
69
69
  blurInputOnSelect: G = !1,
70
- autoFocus: we = !1,
71
- isClearable: Le = !0,
72
- isClearIndicatorVisible: Ve = !1,
70
+ autoFocus: Le = !1,
71
+ isClearable: Ve = !0,
72
+ isClearIndicatorVisible: H = !1,
73
+ showClearOnInteraction: Ae = !1,
73
74
  isSearchable: O = !0,
74
- openKeyboardOnTouch: H = !0,
75
- menuIsOpen: Ae,
76
- onMenuClose: _e,
77
- onMenuOpen: ke,
75
+ openKeyboardOnTouch: K = !0,
76
+ menuIsOpen: _e,
77
+ onMenuClose: ke,
78
+ onMenuOpen: Re,
78
79
  onBlur: k,
79
- inputIsHidden: Re,
80
- isTagRemovable: De = !1,
81
- tagsEllipsis: Ne = !1,
82
- backspaceRemovesValue: Pe = !1,
83
- optionGroupHeadingText: Te = { modifiers: "small", color: "tertiary" },
84
- cacheOptions: Fe = !0,
85
- showRadioButtons: $e = !1,
86
- renderWithoutLabel: xe,
87
- tooltip: Ee,
88
- classNames: K
89
- } = D, u = (X = it) == null ? void 0 : X(), Ge = r.useId(), R = u == null ? void 0 : u.hasExternalLabel, f = D.id ?? (u == null ? void 0 : u.inputId) ?? Ge, He = R ? (u == null ? void 0 : u.inputId) ?? f : `${f}-input`, Ke = R ? `${f}-container` : f, j = a ? (a == null ? void 0 : a.id) ?? `${f}-helper` : void 0, h = r.useRef(null), { getLabel: C } = Vt();
80
+ inputIsHidden: De,
81
+ isTagRemovable: Ne = !1,
82
+ tagsEllipsis: Pe = !1,
83
+ backspaceRemovesValue: Te = !1,
84
+ optionGroupHeadingText: Fe = { modifiers: "small", color: "tertiary" },
85
+ cacheOptions: $e = !0,
86
+ showRadioButtons: xe = !1,
87
+ renderWithoutLabel: Ee,
88
+ tooltip: Ge,
89
+ classNames: j
90
+ } = D, u = (J = ct) == null ? void 0 : J(), He = r.useId(), R = u == null ? void 0 : u.hasExternalLabel, m = D.id ?? (u == null ? void 0 : u.inputId) ?? He, Ke = R ? (u == null ? void 0 : u.inputId) ?? m : `${m}-input`, je = R ? `${m}-container` : m, U = a ? (a == null ? void 0 : a.id) ?? `${m}-helper` : void 0, h = r.useRef(null), { getLabel: C } = At();
90
91
  r.useImperativeHandle(
91
- te,
92
+ oe,
92
93
  () => h.current
93
94
  );
94
- const [je, U] = r.useState(!1), Ue = (t) => {
95
+ const [Ue, B] = r.useState(!1), Be = (t) => {
95
96
  var e, o;
96
- if (H || !O || t.pointerType !== "touch" && t.pointerType !== "pen") return;
97
+ if (K || !O || t.pointerType !== "touch" && t.pointerType !== "pen") return;
97
98
  const l = t.target;
98
99
  if (!((e = l.closest) != null && e.call(l, `.${d["tedi-select__control"]}`))) return;
99
100
  const n = (o = h.current) == null ? void 0 : o.inputRef, i = !!n && (t.target === n || n.contains(l));
100
- U(!i);
101
- }, Be = () => {
102
- U(!1), k == null || k();
103
- }, S = !!x && v, [ze, qe] = r.useState(T ?? null), B = P !== void 0, g = B ? P : ze, p = r.useMemo(() => Array.isArray(g) ? g : g ? [g] : [], [g]), w = r.useMemo(
101
+ B(!i);
102
+ }, ze = () => {
103
+ B(!1), k == null || k();
104
+ }, S = !!x && v, [qe, We] = r.useState(T ?? null), z = P !== void 0, g = z ? P : qe, p = r.useMemo(() => Array.isArray(g) ? g : g ? [g] : [], [g]), w = r.useMemo(
104
105
  () => ({ value: M, label: C("select.select-all") }),
105
106
  [C]
106
- ), b = !!E && !!v, { groupFlattenedOptions: z, groupSentinelMap: I } = r.useMemo(() => {
107
+ ), b = !!E && !!v, { groupFlattenedOptions: q, groupSentinelMap: I } = r.useMemo(() => {
107
108
  const t = /* @__PURE__ */ new Map();
108
109
  if (!b || !c || c.length === 0)
109
110
  return { groupFlattenedOptions: null, groupSentinelMap: t };
@@ -111,8 +112,8 @@ const At = nt(
111
112
  const n = [], i = /* @__PURE__ */ new Map();
112
113
  for (const e of c)
113
114
  if (e && Array.isArray(e.options)) {
114
- const o = e, s = `${ut}${o.label ?? ""}`, m = o.options.filter((y) => !y.isDisabled);
115
- i.set(s, { enabled: m }), n.push({ value: s, label: o.label ?? "" });
115
+ const o = e, s = `${dt}${o.label ?? ""}`, f = o.options.filter((y) => !y.isDisabled);
116
+ i.set(s, { enabled: f }), n.push({ value: s, label: o.label ?? "" });
116
117
  for (const y of o.options)
117
118
  n.push({
118
119
  ...y,
@@ -121,17 +122,17 @@ const At = nt(
121
122
  } else
122
123
  n.push(e);
123
124
  return { groupFlattenedOptions: n, groupSentinelMap: i };
124
- }, [c, b]), We = r.useMemo(() => {
125
- let t = z ?? c;
125
+ }, [c, b]), Xe = r.useMemo(() => {
126
+ let t = q ?? c;
126
127
  return S && t && t.length > 0 && (t = [w, ...t]), t;
127
- }, [c, z, S, w]), Xe = r.useMemo(() => {
128
+ }, [c, q, S, w]), Je = r.useMemo(() => {
128
129
  const t = [];
129
130
  if (b && I.size > 0)
130
131
  for (const [l, n] of I)
131
- n.enabled.length > 0 && Y(p, n.enabled) && t.push({ value: l, label: "" });
132
+ n.enabled.length > 0 && Z(p, n.enabled) && t.push({ value: l, label: "" });
132
133
  if (S) {
133
- const l = Z(c ?? []);
134
- l.length > 0 && Y(p, l) && t.push(w);
134
+ const l = ee(c ?? []);
135
+ l.length > 0 && Z(p, l) && t.push(w);
135
136
  }
136
137
  return t.length === 0 ? g : [...p, ...t];
137
138
  }, [
@@ -142,7 +143,7 @@ const At = nt(
142
143
  I,
143
144
  S,
144
145
  w
145
- ]), Je = (t, l) => {
146
+ ]), Qe = (t, l) => {
146
147
  let n = t;
147
148
  const i = l.option;
148
149
  if (b && i && I.has(i.value)) {
@@ -150,114 +151,114 @@ const At = nt(
150
151
  if (l.action === "select-option") {
151
152
  const o = [...p];
152
153
  for (const s of e)
153
- o.some((m) => m.value === s.value) || o.push(s);
154
+ o.some((f) => f.value === s.value) || o.push(s);
154
155
  n = o;
155
156
  } else l.action === "deselect-option" && (n = p.filter((o) => !e.some((s) => s.value === o.value)));
156
157
  } else if (S) {
157
- const e = Z(c ?? []), o = (i == null ? void 0 : i.value) === M;
158
+ const e = ee(c ?? []), o = (i == null ? void 0 : i.value) === M;
158
159
  o && l.action === "select-option" ? n = [...p.filter(
159
- (m) => m.value !== M && !e.some((y) => y.value === m.value)
160
+ (f) => f.value !== M && !e.some((y) => y.value === f.value)
160
161
  ), ...e] : o && l.action === "deselect-option" && (n = p.filter(
161
- (s) => s.value !== M && !e.some((m) => m.value === s.value)
162
+ (s) => s.value !== M && !e.some((f) => f.value === s.value)
162
163
  ));
163
164
  }
164
- Array.isArray(n) && (n = n.filter((e) => e.value !== M && !ee(e))), B || qe(n), A == null || A(n), !G && h.current && setTimeout(() => {
165
+ Array.isArray(n) && (n = n.filter((e) => e.value !== M && !te(e))), z || We(n), A == null || A(n), !G && h.current && setTimeout(() => {
165
166
  var e, o;
166
167
  return (o = (e = h.current) == null ? void 0 : e.inputRef) == null ? void 0 : o.focus();
167
168
  }, 0);
168
- }, Qe = r.useCallback(
169
- (t, l) => t.data.value === M || ee(t.data) || !l ? !0 : String(t.label).toLowerCase().includes(l.toLowerCase()),
169
+ }, Ye = r.useCallback(
170
+ (t, l) => t.data.value === M || te(t.data) || !l ? !0 : String(t.label).toLowerCase().includes(l.toLowerCase()),
170
171
  []
171
- ), [q, W] = r.useState(!1), Ye = (t) => {
172
- (t.key === "ArrowUp" || t.key === "ArrowDown" || t.key === "Home" || t.key === "End" || t.key === "PageUp" || t.key === "PageDown" || t.key === "Tab") && (q || W(!0));
173
- }, Ze = r.useCallback(() => {
174
- W((t) => t && !1);
175
- }, []), et = r.useCallback(
176
- (t) => /* @__PURE__ */ L(vt, { ...t, renderMessageListFooter: $ }),
172
+ ), [W, X] = r.useState(!1), Ze = (t) => {
173
+ (t.key === "ArrowUp" || t.key === "ArrowDown" || t.key === "Home" || t.key === "End" || t.key === "PageUp" || t.key === "PageDown" || t.key === "Tab") && (W || X(!0));
174
+ }, et = r.useCallback(() => {
175
+ X((t) => t && !1);
176
+ }, []), tt = r.useCallback(
177
+ (t) => /* @__PURE__ */ L(ht, { ...t, renderMessageListFooter: $ }),
177
178
  [$]
178
- ), tt = () => /* @__PURE__ */ L(
179
- ye ? st : lt,
179
+ ), ot = () => /* @__PURE__ */ L(
180
+ Me ? rt : st,
180
181
  {
181
182
  tagsDirection: V,
182
183
  showSelectAll: x,
183
184
  selectableGroups: E,
184
- dropdownType: Ie,
185
- renderValue: Oe,
186
- keyboardMode: q,
187
- exitKeyboardMode: Ze,
188
- onKeyDown: Ye,
189
- id: Ke,
190
- "aria-describedby": j,
191
- autoFocus: we,
185
+ dropdownType: Oe,
186
+ renderValue: Ce,
187
+ keyboardMode: W,
188
+ exitKeyboardMode: et,
189
+ onKeyDown: Ze,
190
+ id: je,
191
+ "aria-describedby": U,
192
+ autoFocus: Le,
192
193
  ref: h,
193
- instanceId: f,
194
+ instanceId: m,
194
195
  className: "tedi-select__wrapper",
195
- name: ne,
196
- options: We,
197
- defaultOptions: oe,
198
- value: Xe,
196
+ name: le,
197
+ options: Xe,
198
+ defaultOptions: ne,
199
+ value: Je,
199
200
  defaultValue: T,
200
- cacheOptions: Fe,
201
- onChange: Je,
202
- filterOption: S || b ? Qe : void 0,
203
- onInputChange: re,
204
- onBlur: Be,
205
- softKeyboardSuppressed: !H && O && je,
206
- inputValue: ae,
207
- inputId: He,
208
- loadOptions: ie,
209
- isLoading: ce,
210
- noOptionsMessage: ve || (() => C("select.no-options")),
211
- loadingMessage: he || (() => C("select.loading")),
201
+ cacheOptions: $e,
202
+ onChange: Qe,
203
+ filterOption: S || b ? Ye : void 0,
204
+ onInputChange: ae,
205
+ onBlur: ze,
206
+ softKeyboardSuppressed: !K && O && Ue,
207
+ inputValue: ie,
208
+ inputId: Ke,
209
+ loadOptions: ce,
210
+ isLoading: ue,
211
+ noOptionsMessage: he || (() => C("select.no-options")),
212
+ loadingMessage: Ie || (() => C("select.loading")),
212
213
  classNamePrefix: "select",
213
214
  components: {
214
- ClearIndicator: (e) => dt({ isClearIndicatorVisible: Ve, ...e }),
215
- DropdownIndicator: () => mt({ iconName: le }),
215
+ ClearIndicator: (e) => pt({ isClearIndicatorVisible: H, ...e }),
216
+ DropdownIndicator: () => mt({ iconName: se }),
216
217
  IndicatorSeparator: () => null,
217
- MenuPortal: ht,
218
- Menu: Mt,
219
- MenuList: et,
220
- Option: (e) => Ct({ renderOption: Me, multiple: v, showRadioButtons: $e, ...e }),
221
- Control: pt,
222
- Input: bt,
223
- MultiValue: (e) => It({ isTagRemovable: De, tagsEllipsis: Ne, ...e }),
224
- MultiValueRemove: Ot,
225
- SingleValue: wt,
226
- Group: ft,
227
- GroupHeading: (e) => gt({ optionGroupHeadingText: Te, ...e }),
228
- IndicatorsContainer: St,
229
- ValueContainer: Lt,
230
- LoadingIndicator: yt
218
+ MenuPortal: It,
219
+ Menu: vt,
220
+ MenuList: tt,
221
+ Option: (e) => wt({ renderOption: ve, multiple: v, showRadioButtons: xe, ...e }),
222
+ Control: ft,
223
+ Input: yt,
224
+ MultiValue: (e) => Ot({ isTagRemovable: Ne, tagsEllipsis: Pe, ...e }),
225
+ MultiValueRemove: Ct,
226
+ SingleValue: Lt,
227
+ Group: gt,
228
+ GroupHeading: (e) => St({ optionGroupHeadingText: Fe, ...e }),
229
+ IndicatorsContainer: bt,
230
+ ValueContainer: Vt,
231
+ LoadingIndicator: Mt
231
232
  },
232
233
  isDisabled: F,
233
234
  isSearchable: O,
234
- menuIsOpen: Ae,
235
- openMenuOnFocus: ue,
236
- openMenuOnClick: de,
237
- tabSelectsValue: pe,
238
- onMenuClose: _e,
239
- onMenuOpen: ke,
240
- placeholder: ge || "",
241
- isClearable: Le,
242
- backspaceRemovesValue: Pe,
235
+ menuIsOpen: _e,
236
+ openMenuOnFocus: de,
237
+ openMenuOnClick: pe,
238
+ tabSelectsValue: fe,
239
+ onMenuClose: ke,
240
+ onMenuOpen: Re,
241
+ placeholder: Se || "",
242
+ isClearable: Ve,
243
+ backspaceRemovesValue: Te,
243
244
  menuShouldScrollIntoView: !0,
244
245
  isMulti: v,
245
246
  hideSelectedOptions: !1,
246
- closeMenuOnSelect: Ce,
247
+ closeMenuOnSelect: we,
247
248
  blurInputOnSelect: G,
248
249
  menuPlacement: "auto",
249
- inputIsHidden: Re,
250
+ inputIsHidden: De,
250
251
  required: N,
251
252
  menuPortalTarget: document.body,
252
253
  menuPosition: "absolute",
253
254
  classNames: (() => {
254
255
  const e = {};
255
- if (K)
256
- for (const [o, s] of Object.entries(K))
256
+ if (j)
257
+ for (const [o, s] of Object.entries(j))
257
258
  e[o] = typeof s == "string" ? () => s : s;
258
259
  if (u) {
259
260
  const o = e.control;
260
- e.control = (s) => Q(o == null ? void 0 : o(s), ct["tedi-input-group__input"]);
261
+ e.control = (s) => Y(o == null ? void 0 : o(s), ut["tedi-input-group__input"]);
261
262
  }
262
263
  return Object.keys(e).length > 0 ? e : void 0;
263
264
  })(),
@@ -277,37 +278,38 @@ const At = nt(
277
278
  })
278
279
  }
279
280
  }
280
- ), ot = Q(
281
+ ), nt = Y(
281
282
  d["tedi-select"],
282
283
  me,
283
- { [d["tedi-select--invalid"]]: Se || (a == null ? void 0 : a.type) === "error" },
284
- { [d["tedi-select--valid"]]: be || (a == null ? void 0 : a.type) === "valid" },
284
+ { [d["tedi-select--invalid"]]: be || (a == null ? void 0 : a.type) === "error" },
285
+ { [d["tedi-select--valid"]]: ye || (a == null ? void 0 : a.type) === "valid" },
285
286
  { [d[`tedi-select--${_}`]]: _ },
286
287
  { [d[`tedi-select--tags-${V}`]]: V },
287
288
  { [d["tedi-select--searchable"]]: O },
289
+ { [d["tedi-select--clear-on-interaction"]]: H && Ae },
288
290
  { [d["tedi-select--disabled"]]: F }
289
291
  );
290
- return /* @__PURE__ */ J("div", { "data-name": "select", className: ot, onPointerDownCapture: Ue, children: [
291
- /* @__PURE__ */ J("div", { className: d["tedi-select__inner"], children: [
292
+ return /* @__PURE__ */ Q("div", { "data-name": "select", className: nt, onPointerDownCapture: Be, children: [
293
+ /* @__PURE__ */ Q("div", { className: d["tedi-select__inner"], children: [
292
294
  !R && /* @__PURE__ */ L(
293
- at,
295
+ it,
294
296
  {
295
- id: `${f}-input`,
296
- label: se,
297
+ id: `${m}-input`,
298
+ label: re,
297
299
  required: N,
298
- hideLabel: fe,
300
+ hideLabel: ge,
299
301
  size: _,
300
- renderWithoutLabel: xe,
301
- tooltip: Ee
302
+ renderWithoutLabel: Ee,
303
+ tooltip: Ge
302
304
  }
303
305
  ),
304
- tt()
306
+ ot()
305
307
  ] }),
306
- a && /* @__PURE__ */ L(rt, { ...a, id: j })
308
+ a && /* @__PURE__ */ L(at, { ...a, id: U })
307
309
  ] });
308
310
  }
309
311
  );
310
- At.displayName = "Select";
312
+ _t.displayName = "Select";
311
313
  export {
312
- At as Select
314
+ _t as Select
313
315
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-select__control":"tedi-select__control-dbce8bb7","tedi-select__value-container":"tedi-select__value-container-253d079a","tedi-select__indicators-container":"tedi-select__indicators-container-0fc8fa2a","tedi-select__input":"tedi-select__input-5525b622","tedi-select":"tedi-select-8b014852","tedi-select--disabled":"tedi-select--disabled-2d4b8ddd","tedi-select--invalid":"tedi-select--invalid-3901c89c","tedi-select--valid":"tedi-select--valid-969c0297","tedi-select__control--focused":"tedi-select__control--focused-0e632efe","tedi-select__arrow":"tedi-select__arrow-94b5ef4a","tedi-select__loading-indicator":"tedi-select__loading-indicator-a35a63ca","tedi-select__dropdown-indicator":"tedi-select__dropdown-indicator-5a948baa","tedi-select__clear-indicator":"tedi-select__clear-indicator-68b60b12","tedi-select__menu-portal":"tedi-select__menu-portal-d5349f37","tedi-select__menu":"tedi-select__menu-bf54b75b","tedi-select__menu-list--grid":"tedi-select__menu-list--grid-393f3232","tedi-select__menu-list":"tedi-select__menu-list-0aa06e24","tedi-select__menu-list-inner":"tedi-select__menu-list-inner-471e5cf8","tedi-select__menu-list-footer":"tedi-select__menu-list-footer-eb1d3bbc","tedi-select__option":"tedi-select__option-6f811381","tedi-select__option--disabled":"tedi-select__option--disabled-d3aff112","tedi-select__option--selected":"tedi-select__option--selected-a93e5fb0","tedi-select__option--focused":"tedi-select__option--focused-1d972ff1","tedi-select__option--control":"tedi-select__option--control-f69f3f48","tedi-select--small":"tedi-select--small-2659608b","tedi-select__multi-value-item":"tedi-select__multi-value-item-b8ec59ae","tedi-select__multi-value--ellipsis":"tedi-select__multi-value--ellipsis-1d821ed7","tedi-select__group":"tedi-select__group-b275e954","tedi-select__group-heading":"tedi-select__group-heading-02b3d9bc","tedi-select__group-heading--selectable":"tedi-select__group-heading--selectable-c84cd617","tedi-select__option--indented":"tedi-select__option--indented-bf4a1661","tedi-select__multi-value-clear":"tedi-select__multi-value-clear-d231f7de","tedi-select--tags-row":"tedi-select--tags-row-c9f33e4b","tedi-select__overflow-tag":"tedi-select__overflow-tag-c0391df2","tedi-select__menu-list--keyboard":"tedi-select__menu-list--keyboard-3d066942","tedi-select__select-all":"tedi-select__select-all-12c3e7f1","tedi-select__group-heading-toggle":"tedi-select__group-heading-toggle-34296a63","tedi-select--tags-stack":"tedi-select--tags-stack-ddb929a9","tedi-select__separator":"tedi-select__separator-b1045f3f","tedi-select--searchable":"tedi-select--searchable-d56eb325"};exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-select__control":"tedi-select__control-dbce8bb7","tedi-select__value-container":"tedi-select__value-container-253d079a","tedi-select__indicators-container":"tedi-select__indicators-container-0fc8fa2a","tedi-select__input":"tedi-select__input-5525b622","tedi-select":"tedi-select-8b014852","tedi-select--disabled":"tedi-select--disabled-2d4b8ddd","tedi-select--invalid":"tedi-select--invalid-3901c89c","tedi-select--valid":"tedi-select--valid-969c0297","tedi-select__control--focused":"tedi-select__control--focused-0e632efe","tedi-select__arrow":"tedi-select__arrow-94b5ef4a","tedi-select__loading-indicator":"tedi-select__loading-indicator-a35a63ca","tedi-select__dropdown-indicator":"tedi-select__dropdown-indicator-5a948baa","tedi-select__clear-indicator":"tedi-select__clear-indicator-68b60b12","tedi-select--clear-on-interaction":"tedi-select--clear-on-interaction-6a390ada","tedi-select__separator":"tedi-select__separator-b1045f3f","tedi-select__menu-portal":"tedi-select__menu-portal-d5349f37","tedi-select__menu":"tedi-select__menu-bf54b75b","tedi-select__menu-list--grid":"tedi-select__menu-list--grid-393f3232","tedi-select__menu-list":"tedi-select__menu-list-0aa06e24","tedi-select__menu-list-inner":"tedi-select__menu-list-inner-471e5cf8","tedi-select__menu-list-footer":"tedi-select__menu-list-footer-eb1d3bbc","tedi-select__option":"tedi-select__option-6f811381","tedi-select__option--disabled":"tedi-select__option--disabled-d3aff112","tedi-select__option--selected":"tedi-select__option--selected-a93e5fb0","tedi-select__option--focused":"tedi-select__option--focused-1d972ff1","tedi-select__option--control":"tedi-select__option--control-f69f3f48","tedi-select--small":"tedi-select--small-2659608b","tedi-select__multi-value-item":"tedi-select__multi-value-item-b8ec59ae","tedi-select__multi-value--ellipsis":"tedi-select__multi-value--ellipsis-1d821ed7","tedi-select__group":"tedi-select__group-b275e954","tedi-select__group-heading":"tedi-select__group-heading-02b3d9bc","tedi-select__group-heading--selectable":"tedi-select__group-heading--selectable-c84cd617","tedi-select__option--indented":"tedi-select__option--indented-bf4a1661","tedi-select__multi-value-clear":"tedi-select__multi-value-clear-d231f7de","tedi-select--tags-row":"tedi-select--tags-row-c9f33e4b","tedi-select__overflow-tag":"tedi-select__overflow-tag-c0391df2","tedi-select__menu-list--keyboard":"tedi-select__menu-list--keyboard-3d066942","tedi-select__select-all":"tedi-select__select-all-12c3e7f1","tedi-select__group-heading-toggle":"tedi-select__group-heading-toggle-34296a63","tedi-select--tags-stack":"tedi-select--tags-stack-ddb929a9","tedi-select--searchable":"tedi-select--searchable-d56eb325"};exports.default=e;
@@ -12,6 +12,8 @@ const e = {
12
12
  "tedi-select__loading-indicator": "tedi-select__loading-indicator-a35a63ca",
13
13
  "tedi-select__dropdown-indicator": "tedi-select__dropdown-indicator-5a948baa",
14
14
  "tedi-select__clear-indicator": "tedi-select__clear-indicator-68b60b12",
15
+ "tedi-select--clear-on-interaction": "tedi-select--clear-on-interaction-6a390ada",
16
+ "tedi-select__separator": "tedi-select__separator-b1045f3f",
15
17
  "tedi-select__menu-portal": "tedi-select__menu-portal-d5349f37",
16
18
  "tedi-select__menu": "tedi-select__menu-bf54b75b",
17
19
  "tedi-select__menu-list--grid": "tedi-select__menu-list--grid-393f3232",
@@ -37,7 +39,6 @@ const e = {
37
39
  "tedi-select__select-all": "tedi-select__select-all-12c3e7f1",
38
40
  "tedi-select__group-heading-toggle": "tedi-select__group-heading-toggle-34296a63",
39
41
  "tedi-select--tags-stack": "tedi-select--tags-stack-ddb929a9",
40
- "tedi-select__separator": "tedi-select__separator-b1045f3f",
41
42
  "tedi-select--searchable": "tedi-select--searchable-d56eb325"
42
43
  };
43
44
  export {
@@ -1,6 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { TextFieldForwardRef, TextFieldProps } from '../textfield/textfield';
3
- export interface TextareaProps extends Omit<TextFieldProps, 'icon' | 'isClearable' | 'onClear'> {
3
+ export interface TextareaProps extends Omit<TextFieldProps, 'icon' | 'isClearable' | 'showClearOnInteraction' | 'onClear'> {
4
4
  /**
5
5
  * Maximum number of characters allowed in the textarea.
6
6
  */
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),_=require("../../../../../external/classnames/index.cjs.js"),i=require("react"),K=require("../../base/icon/icon.cjs.js"),pe=require("../../buttons/closing-button/closing-button.cjs.js"),_e=require("../../misc/separator/separator.cjs.js"),D=require("../feedback-text/feedback-text.cjs.js"),he=require("../field/field.cjs.js"),ge=require("../form-label/form-label.cjs.js"),k=require("../input-group/input-group.cjs.js"),r=require("./textfield.module.scss.cjs.js"),Ie=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),je=require("../../../providers/label-provider/use-labels.cjs.js"),Ae={large:24,default:18},q=i.forwardRef((h,U)=>{var V;const{getCurrentBreakpointProps:J}=Ie.useBreakpointProps(h.defaultServerBreakpoint),{id:Ne,label:g,className:Q,inputClassName:W,disabled:c,required:C,hideLabel:S,invalid:u,readOnly:B,icon:s,onIconClick:b,iconButtonProps:y,size:d="default",placeholder:X,isArrowsHidden:Y=!0,isClearable:F,onClear:v,onChange:o,onChangeEvent:Z,onKeyUp:G,onKeyDown:ee,onKeyPress:te,defaultValue:T,value:I,onFocus:j,onBlur:A,onClick:re,helper:e,input:a,name:ae,isTextArea:le,startSlot:ie,endSlot:se,...ne}=J(h)||{},{getLabel:w}=je.useLabels(),z=i.useRef(null),L=i.useRef(null),[de,R]=i.useState(I??T??""),M=I??de,f=!!(F&&M&&!B),x=(V=k.useOptionalInputGroup)==null?void 0:V.call(k),oe=i.useId(),ce=x==null?void 0:x.hasExternalLabel,m=h.id??(x==null?void 0:x.inputId)??oe;i.useImperativeHandle(U,()=>({get input(){return L.current},get inner(){return z.current}}));const P=i.useMemo(()=>Array.isArray(e)?u||e.some(t=>t.type==="error"):u||(e==null?void 0:e.type)==="error",[u,e]),ue=i.useMemo(()=>!e||Array.isArray(e)&&e.length===0?!1:Array.isArray(e)?!u&&e.every(t=>t.type==="valid"):!u&&e.type==="valid",[u,e]),fe=d==="large"?"default":d,p=I!==void 0,xe=i.useCallback(t=>{p||R(t),o==null||o(t)},[p,o]),O=i.useCallback(()=>{p||R(""),o==null||o(""),v==null||v()},[p,o,v]),$=i.useCallback(()=>{if(!s)return null;const N={size:d==="large"?24:d==="small"?!!b?18:16:18,className:r.default["tedi-textfield__icon"]},H=typeof s=="string"?{...N,name:s}:{...N,...s,className:_.default(N.className,s.className)};return b?l.jsx("button",{type:"button",...y,className:_.default(r.default["tedi-textfield__icon-wrapper"],y==null?void 0:y.className),onClick:c?void 0:b,disabled:c,children:l.jsx(K.Icon,{...H})}):l.jsx("div",{className:r.default["tedi-textfield__icon-wrapper"],"aria-hidden":"true",children:l.jsx(K.Icon,{...H})})},[s,d,b,y,c]),E=i.useMemo(()=>f?l.jsx(pe.ClosingButton,{iconSize:Ae[d==="large"?"large":"default"],onClick:c?void 0:O,disabled:c,title:w("clear"),className:r.default["tedi-textfield__clear-button"]}):null,[f,d,c,O,w]),me=i.useMemo(()=>!f&&!s?null:l.jsxs("div",{className:r.default["tedi-textfield__right-area"],children:[E,f&&s&&l.jsx(_e.Separator,{color:"primary",axis:"vertical",className:r.default["tedi-textfield__separator"]}),s&&$()]}),[f,s,E,$]),ye=l.jsx(he.Field,{...a,id:m,name:ae,value:M,defaultValue:T,onChange:xe,onChangeEvent:Z,disabled:c,readOnly:B||(a==null?void 0:a.readOnly),required:C,invalid:P,placeholder:X,className:_.default(r.default["tedi-textfield__input"],W,{[r.default["tedi-textfield__input--hidden-arrows"]]:Y}),onFocus:t=>{var n;(n=a==null?void 0:a.onFocus)==null||n.call(a,t),j==null||j(t)},onBlur:t=>{var n;(n=a==null?void 0:a.onBlur)==null||n.call(a,t),A==null||A(t)},isTextArea:le,"aria-describedby":!e||Array.isArray(e)&&e.length===0?void 0:Array.isArray(e)?e.map((t,n)=>`${m}-helper-${n}`).join(" "):`${m}-helper`,"aria-label":S&&typeof g=="string"?g:void 0,ref:L}),be=_.default(r.default["tedi-textfield"],{[r.default[`tedi-textfield--${d}`]]:d},{[r.default["tedi-textfield--with-icon"]]:s},{[r.default["tedi-textfield--invalid"]]:P},{[r.default["tedi-textfield--valid"]]:ue},{[r.default["tedi-textfield--clearable"]]:f},Q),ve=()=>!e||Array.isArray(e)&&e.length===0?null:l.jsx("div",{className:r.default["tedi-textfield__feedback-wrapper"],children:Array.isArray(e)?e.map((t,n)=>l.jsx(D.FeedbackText,{...t,id:`${m}-helper-${n}`},n)):l.jsx(D.FeedbackText,{...e,id:`${m}-helper`})});return l.jsxs("div",{"data-name":"textfield",...ne,className:be,children:[!ce&&l.jsx(ge.FormLabel,{id:m,label:g,required:C,hideLabel:S,size:fe}),l.jsxs("div",{className:r.default["tedi-textfield__inner"],onKeyDown:ee,onKeyUp:G,onKeyPress:te,onClick:re,ref:z,children:[ie,ye,se,(F||s)&&me]}),ve()]})});q.displayName="TextField";exports.TextField=q;exports.default=q;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),p=require("../../../../../external/classnames/index.cjs.js"),i=require("react"),K=require("../../base/icon/icon.cjs.js"),pe=require("../../buttons/closing-button/closing-button.cjs.js"),_e=require("../../misc/separator/separator.cjs.js"),D=require("../feedback-text/feedback-text.cjs.js"),Ie=require("../field/field.cjs.js"),ge=require("../form-label/form-label.cjs.js"),k=require("../input-group/input-group.cjs.js"),t=require("./textfield.module.scss.cjs.js"),je=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),Ae=require("../../../providers/label-provider/use-labels.cjs.js"),Ne={large:24,default:18},q=i.forwardRef((_,U)=>{var V;const{getCurrentBreakpointProps:J}=je.useBreakpointProps(_.defaultServerBreakpoint),{id:ke,label:I,className:Q,inputClassName:W,disabled:c,required:C,hideLabel:S,invalid:f,readOnly:B,icon:s,onIconClick:b,iconButtonProps:y,size:d="default",placeholder:X,isArrowsHidden:Y=!0,isClearable:F,showClearOnInteraction:Z,onClear:v,onChange:o,onChangeEvent:G,onKeyUp:ee,onKeyDown:te,onKeyPress:re,defaultValue:w,value:g,onFocus:j,onBlur:A,onClick:ae,helper:e,input:a,name:le,isTextArea:ie,startSlot:se,endSlot:ne,...de}=J(_)||{},{getLabel:T}=Ae.useLabels(),z=i.useRef(null),L=i.useRef(null),[oe,R]=i.useState(g??w??""),M=g??oe,u=!!(F&&M&&!B),x=(V=k.useOptionalInputGroup)==null?void 0:V.call(k),ce=i.useId(),ue=x==null?void 0:x.hasExternalLabel,m=_.id??(x==null?void 0:x.inputId)??ce;i.useImperativeHandle(U,()=>({get input(){return L.current},get inner(){return z.current}}));const O=i.useMemo(()=>Array.isArray(e)?f||e.some(r=>r.type==="error"):f||(e==null?void 0:e.type)==="error",[f,e]),fe=i.useMemo(()=>!e||Array.isArray(e)&&e.length===0?!1:Array.isArray(e)?!f&&e.every(r=>r.type==="valid"):!f&&e.type==="valid",[f,e]),xe=d==="large"?"default":d,h=g!==void 0,me=i.useCallback(r=>{h||R(r),o==null||o(r)},[h,o]),P=i.useCallback(()=>{h||R(""),o==null||o(""),v==null||v()},[h,o,v]),$=i.useCallback(()=>{if(!s)return null;const N={size:d==="large"?24:d==="small"?!!b?18:16:18,className:t.default["tedi-textfield__icon"]},H=typeof s=="string"?{...N,name:s}:{...N,...s,className:p.default(N.className,s.className)};return b?l.jsx("button",{type:"button",...y,className:p.default(t.default["tedi-textfield__icon-wrapper"],y==null?void 0:y.className),onClick:c?void 0:b,disabled:c,children:l.jsx(K.Icon,{...H})}):l.jsx("div",{className:t.default["tedi-textfield__icon-wrapper"],"aria-hidden":"true",children:l.jsx(K.Icon,{...H})})},[s,d,b,y,c]),E=i.useMemo(()=>u?l.jsx(pe.ClosingButton,{iconSize:Ne[d==="large"?"large":"default"],onClick:c?void 0:P,disabled:c,title:T("clear"),className:t.default["tedi-textfield__clear-button"]}):null,[u,d,c,P,T]),ye=i.useMemo(()=>!u&&!s?null:l.jsxs("div",{className:t.default["tedi-textfield__right-area"],children:[E,u&&s&&l.jsx(_e.Separator,{color:"primary",axis:"vertical",className:t.default["tedi-textfield__separator"]}),s&&$()]}),[u,s,E,$]),be=l.jsx(Ie.Field,{...a,id:m,name:le,value:M,defaultValue:w,onChange:me,onChangeEvent:G,disabled:c,readOnly:B||(a==null?void 0:a.readOnly),required:C,invalid:O,placeholder:X,className:p.default(t.default["tedi-textfield__input"],W,{[t.default["tedi-textfield__input--hidden-arrows"]]:Y}),onFocus:r=>{var n;(n=a==null?void 0:a.onFocus)==null||n.call(a,r),j==null||j(r)},onBlur:r=>{var n;(n=a==null?void 0:a.onBlur)==null||n.call(a,r),A==null||A(r)},isTextArea:ie,"aria-describedby":!e||Array.isArray(e)&&e.length===0?void 0:Array.isArray(e)?e.map((r,n)=>`${m}-helper-${n}`).join(" "):`${m}-helper`,"aria-label":S&&typeof I=="string"?I:void 0,ref:L}),ve=p.default(t.default["tedi-textfield"],{[t.default[`tedi-textfield--${d}`]]:d},{[t.default["tedi-textfield--with-icon"]]:s},{[t.default["tedi-textfield--invalid"]]:O},{[t.default["tedi-textfield--valid"]]:fe},{[t.default["tedi-textfield--clearable"]]:u},{[t.default["tedi-textfield--clear-on-interaction"]]:u&&Z},Q),he=()=>!e||Array.isArray(e)&&e.length===0?null:l.jsx("div",{className:t.default["tedi-textfield__feedback-wrapper"],children:Array.isArray(e)?e.map((r,n)=>l.jsx(D.FeedbackText,{...r,id:`${m}-helper-${n}`},n)):l.jsx(D.FeedbackText,{...e,id:`${m}-helper`})});return l.jsxs("div",{"data-name":"textfield",...de,className:ve,children:[!ue&&l.jsx(ge.FormLabel,{id:m,label:I,required:C,hideLabel:S,size:xe}),l.jsxs("div",{className:t.default["tedi-textfield__inner"],onKeyDown:te,onKeyUp:ee,onKeyPress:re,onClick:ae,ref:z,children:[se,be,ne,(F||s)&&ye]}),he()]})});q.displayName="TextField";exports.TextField=q;exports.default=q;
@@ -50,6 +50,12 @@ type TextFieldBreakpointProps = {
50
50
  * @default false
51
51
  */
52
52
  isClearable?: boolean;
53
+ /**
54
+ * Show the clear (×) button only while the field is hovered or focused, instead of whenever it has
55
+ * a value. Requires `isClearable`.
56
+ * @default false
57
+ */
58
+ showClearOnInteraction?: boolean;
53
59
  /**
54
60
  * Additional CSS class name applied to the root container (`<div>`).
55
61
  *