@pismo/marola 1.0.0-beta.9 → 1.0.0

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 (157) hide show
  1. package/dist/{Button-DiLqcAJG.js → Button-BAljjMv3.js} +2 -2
  2. package/dist/{ClickAwayListener-BaJ-OV_7.js → ClickAwayListener-DbEYZpyh.js} +3 -3
  3. package/dist/Dialog.module-W7UCXlf3.js +29 -0
  4. package/dist/Group-DspH8hyO.js +30 -0
  5. package/dist/Popover.module-B4boCutS.js +10 -0
  6. package/dist/{Popup-lLWZt2wk.js → Popup-Ck3XlWMq.js} +3 -3
  7. package/dist/{Portal-B_Es6eUL.js → Portal-oY3enyAm.js} +2 -2
  8. package/dist/SelectButton-B38avP9u.js +75 -0
  9. package/dist/{Tabs.module-jkH1Qjn7.js → Tabs.module-BGGTkDc5.js} +7 -7
  10. package/dist/Toggle-MfR7l8Wn.js +190 -0
  11. package/dist/assets/Alert.css +1 -0
  12. package/dist/assets/Autocomplete.css +1 -1
  13. package/dist/assets/Avatar.css +1 -0
  14. package/dist/assets/Description.css +1 -0
  15. package/dist/assets/Dialog.css +1 -1
  16. package/dist/assets/EllipsisTooltip.css +1 -1
  17. package/dist/assets/Group.css +1 -1
  18. package/dist/assets/Input.css +1 -1
  19. package/dist/assets/PageHeader.css +1 -1
  20. package/dist/assets/Popover.css +1 -0
  21. package/dist/assets/RadioButton.css +1 -0
  22. package/dist/assets/ResultWithChips.css +1 -0
  23. package/dist/assets/SelectButton.css +1 -1
  24. package/dist/assets/Skeleton.css +1 -1
  25. package/dist/assets/Snackbar.css +1 -1
  26. package/dist/assets/StepperNavigator.css +1 -0
  27. package/dist/assets/Table.css +1 -1
  28. package/dist/assets/Tabs.css +1 -1
  29. package/dist/assets/Toggle2.css +1 -1
  30. package/dist/{combineHooksSlotProps-BtBYUV_B.js → combineHooksSlotProps-C-zYvfnF.js} +1 -1
  31. package/dist/components/Adornment/Adornment.d.ts +11 -2
  32. package/dist/components/Adornment/Adornment.js +6 -6
  33. package/dist/components/Adornment/Adornment.stories.d.ts +14 -0
  34. package/dist/components/Adornment/adornment.test.d.ts +1 -0
  35. package/dist/components/Advice/Advice.d.ts +2 -2
  36. package/dist/components/Alert/Alert.d.ts +11 -0
  37. package/dist/components/Alert/Alert.js +46 -0
  38. package/dist/components/Alert/Alert.stories.d.ts +24 -0
  39. package/dist/components/Alert/Alert.test.d.ts +1 -0
  40. package/dist/components/Autocomplete/Autocomplete.d.ts +12 -42
  41. package/dist/components/Autocomplete/Autocomplete.js +422 -432
  42. package/dist/components/Autocomplete/Autocomplete.stories.d.ts +3 -25
  43. package/dist/components/Avatar/Avatar.d.ts +15 -0
  44. package/dist/components/Avatar/Avatar.js +51 -0
  45. package/dist/components/Avatar/Avatar.stories.d.ts +25 -0
  46. package/dist/components/Button/Button.d.ts +2 -0
  47. package/dist/components/Button/Button.js +23 -21
  48. package/dist/components/Chip/Chip.d.ts +6 -4
  49. package/dist/components/Chip/Chip.js +10 -6
  50. package/dist/components/Chip/Chip.stories.d.ts +5 -14
  51. package/dist/components/ConfirmationDialog/ConfirmationDialog.d.ts +14 -0
  52. package/dist/components/ConfirmationDialog/ConfirmationDialog.js +37 -0
  53. package/dist/components/ConfirmationDialog/ConfirmationDialog.stories.d.ts +23 -0
  54. package/dist/components/ConfirmationDialog/ConfirmationModal.test.d.ts +1 -0
  55. package/dist/components/Description/Description.d.ts +21 -0
  56. package/dist/components/Description/Description.js +66 -0
  57. package/dist/components/Description/Description.stories.d.ts +22 -0
  58. package/dist/components/Description/Description.test.d.ts +1 -0
  59. package/dist/components/Dialog/Actions.js +1 -1
  60. package/dist/components/Dialog/Backdrop.d.ts +3 -3
  61. package/dist/components/Dialog/Backdrop.js +8 -7
  62. package/dist/components/Dialog/CloseIconButton.d.ts +1 -2
  63. package/dist/components/Dialog/CloseIconButton.js +15 -18
  64. package/dist/components/Dialog/Dialog.d.ts +16 -10
  65. package/dist/components/Dialog/Dialog.js +167 -167
  66. package/dist/components/Dialog/Dialog.stories.d.ts +73 -67
  67. package/dist/components/Dialog/DialogTitle.d.ts +5 -2
  68. package/dist/components/Dialog/DialogTitle.js +22 -16
  69. package/dist/components/EllipsisTooltip/EllipsisTooltip.js +30 -17
  70. package/dist/components/EllipsisTooltip/EllipsisTooltip.stories.d.ts +1 -0
  71. package/dist/components/Icon/Icon.js +331 -51
  72. package/dist/components/Icon/types.d.ts +1 -1
  73. package/dist/components/IconButton/IconButton.js +1 -1
  74. package/dist/components/Input/Input.d.ts +26 -5
  75. package/dist/components/Input/Input.js +514 -102
  76. package/dist/components/Input/Input.stories.d.ts +2 -21
  77. package/dist/components/InputSearch/InputSearch.d.ts +37 -7
  78. package/dist/components/InputSearch/InputSearch.js +27 -29
  79. package/dist/components/InputSearch/InputSearch.stories.d.ts +15 -3
  80. package/dist/components/PageHeader/PageHeader.d.ts +6 -2
  81. package/dist/components/PageHeader/PageHeader.js +77 -70
  82. package/dist/components/PageHeader/PageHeader.stories.d.ts +3 -1
  83. package/dist/components/PageHeader/PageHeader.test.d.ts +1 -0
  84. package/dist/components/Pagination/Pagination.d.ts +5 -1
  85. package/dist/components/Pagination/Pagination.js +45 -46
  86. package/dist/components/Pagination/Pagination.stories.d.ts +1 -1
  87. package/dist/components/Popover/Popover.d.ts +32 -0
  88. package/dist/components/Popover/Popover.js +24 -0
  89. package/dist/components/Popover/Popover.stories.d.ts +34 -0
  90. package/dist/components/Popover/PopoverBody.d.ts +6 -0
  91. package/dist/components/Popover/PopoverBody.js +6 -0
  92. package/dist/components/Popover/PopoverFooter.d.ts +6 -0
  93. package/dist/components/Popover/PopoverFooter.js +6 -0
  94. package/dist/components/Popover/PopoverHeader.d.ts +6 -0
  95. package/dist/components/Popover/PopoverHeader.js +6 -0
  96. package/dist/components/RadioButton/RadioButton.d.ts +19 -0
  97. package/dist/components/RadioButton/RadioButton.js +37 -0
  98. package/dist/components/RadioButton/RadioButton.stories.d.ts +24 -0
  99. package/dist/components/RadioButton/RadioButton.test.d.ts +1 -0
  100. package/dist/components/ResultWithChips/ResultWithChips.d.ts +12 -0
  101. package/dist/components/ResultWithChips/ResultWithChips.js +33 -0
  102. package/dist/components/RowItem/RowItem.d.ts +2 -2
  103. package/dist/components/RowItem/RowItem.js +9 -5
  104. package/dist/components/RowItem/RowItem.stories.d.ts +17 -0
  105. package/dist/components/RowItem/rowItem.test.d.ts +1 -0
  106. package/dist/components/Select/Select.d.ts +22 -0
  107. package/dist/components/Select/Select.js +476 -414
  108. package/dist/components/Select/SelectButton.d.ts +2 -0
  109. package/dist/components/Select/SelectButton.js +3 -2
  110. package/dist/components/Skeleton/Skeleton.d.ts +3 -1
  111. package/dist/components/Skeleton/Skeleton.js +20 -14
  112. package/dist/components/Skeleton/SkeletonTable.stories.d.ts +1 -1
  113. package/dist/components/Snackbar/Snackbar.js +119 -134
  114. package/dist/components/StepperNavigator/StepperNavigator.d.ts +58 -0
  115. package/dist/components/StepperNavigator/StepperNavigator.js +115 -0
  116. package/dist/components/StepperNavigator/StepperNavigator.stories.d.ts +18 -0
  117. package/dist/components/StepperNavigator/StepperNavigator.test.d.ts +1 -0
  118. package/dist/components/Table/Table.d.ts +3 -1
  119. package/dist/components/Table/Table.js +89 -101
  120. package/dist/components/Table/Table.stories.d.ts +1 -1
  121. package/dist/components/Tabs/Tab.d.ts +5 -3
  122. package/dist/components/Tabs/Tab.js +36 -35
  123. package/dist/components/Tabs/TabPanel.d.ts +4 -2
  124. package/dist/components/Tabs/TabPanel.js +48 -38
  125. package/dist/components/Tabs/Tabs.d.ts +6 -4
  126. package/dist/components/Tabs/Tabs.js +115 -112
  127. package/dist/components/TextDisplay/TextDisplay.d.ts +7 -3
  128. package/dist/components/TextDisplay/TextDisplay.js +44 -37
  129. package/dist/components/TextDisplay/TextDisplay.stories.d.ts +2 -1
  130. package/dist/components/Toggle/Toggle.js +1 -1
  131. package/dist/components/ToggleGroup/Group.d.ts +2 -0
  132. package/dist/components/ToggleGroup/Group.js +4 -2
  133. package/dist/components/ToggleGroup/Toggle.d.ts +2 -0
  134. package/dist/components/ToggleGroup/Toggle.js +8 -4
  135. package/dist/components/ToggleGroup/ToggleGroup.js +2 -2
  136. package/dist/components/ToggleGroup/ToggleGroup.stories.d.ts +2 -0
  137. package/dist/components/Tooltip/Tooltip.d.ts +3 -1
  138. package/dist/components/Tooltip/Tooltip.js +4 -4
  139. package/dist/components/Tooltip/Tooltip.stories.d.ts +1 -0
  140. package/dist/contexts/SnackbarProvider/SnackbarProvider.d.ts +2 -2
  141. package/dist/contexts/SnackbarProvider/SnackbarProvider.js +35 -30
  142. package/dist/contexts/SnackbarProvider/SnackbarProvider.stories.d.ts +1 -1
  143. package/dist/{index-D3Wj0eid.js → index-bQFToy-I.js} +1 -1
  144. package/dist/main.d.ts +8 -0
  145. package/dist/main.js +95 -79
  146. package/dist/marola.css +1 -1
  147. package/dist/{ownerDocument-B61GUaFs.js → ownerDocument-YGhwAnr1.js} +1 -1
  148. package/dist/test-utils/assertStyles.d.ts +1 -1
  149. package/dist/{useButton-Bn3MNH8I.js → useButton-DcihopJG.js} +1 -1
  150. package/dist/{useList-BpJT77u3.js → useList-B9C55YB7.js} +2 -2
  151. package/dist/{useSlotProps-kRhf7Gil.js → useSlotProps-C_I1kEHr.js} +73 -72
  152. package/package.json +22 -13
  153. package/dist/Dialog.module-DFcZsVAd.js +0 -30
  154. package/dist/Group-B3p31ftp.js +0 -26
  155. package/dist/Input.module-ZTRZRcNt.js +0 -405
  156. package/dist/SelectButton-CoOT2txy.js +0 -61
  157. package/dist/Toggle-f5brSwAI.js +0 -175
@@ -1,358 +1,356 @@
1
1
  import '../../assets/Autocomplete.css';
2
- import { jsxs as He, jsx as T } from "react/jsx-runtime";
3
- import * as g from "react";
4
- import { useId as pt, useState as Fe } from "react";
5
- import { c as Z } from "../../clsx-DB4S2d7J.js";
6
- import { Icon as qe } from "../Icon/Icon.js";
7
- import { s as P, I as gt } from "../../Input.module-ZTRZRcNt.js";
8
- import { Typography as Be } from "../Typography/Typography.js";
9
- import { b as Ke, s as ht } from "../../useSlotProps-kRhf7Gil.js";
10
- import { u as mt } from "../../useId-BW-oWmul.js";
11
- import { u as Te } from "../../useControlled-CCMYYdCM.js";
12
- import { u as he } from "../../useEventCallback-BAQJJ3ye.js";
13
- const bt = (u) => {
14
- const b = g.useRef({});
15
- return g.useEffect(() => {
16
- b.current = u;
2
+ import { jsx as le, jsxs as lt } from "react/jsx-runtime";
3
+ import * as h from "react";
4
+ import { useId as at, useState as ut, createElement as ct } from "react";
5
+ import { Icon as pt } from "../Icon/Icon.js";
6
+ import { Input as ft } from "../Input/Input.js";
7
+ import { b as je, s as dt } from "../../useSlotProps-C_I1kEHr.js";
8
+ import { u as gt } from "../../useId-BW-oWmul.js";
9
+ import { u as _e } from "../../useControlled-CCMYYdCM.js";
10
+ import { u as ae } from "../../useEventCallback-BAQJJ3ye.js";
11
+ const ht = (c) => {
12
+ const b = h.useRef({});
13
+ return h.useEffect(() => {
14
+ b.current = c;
17
15
  }), b.current;
18
16
  };
19
- function Ue(u) {
20
- return typeof u.normalize < "u" ? u.normalize("NFD").replace(/[\u0300-\u036f]/g, "") : u;
17
+ function Ve(c) {
18
+ return typeof c.normalize < "u" ? c.normalize("NFD").replace(/[\u0300-\u036f]/g, "") : c;
21
19
  }
22
- function xt(u = {}) {
20
+ function mt(c = {}) {
23
21
  const {
24
22
  ignoreAccents: b = !0,
25
- ignoreCase: h = !0,
26
- limit: $,
27
- matchFrom: A = "any",
28
- stringify: H,
29
- trim: V = !1
30
- } = u;
31
- return (M, {
32
- inputValue: F,
33
- getOptionLabel: m
23
+ ignoreCase: g = !0,
24
+ limit: D,
25
+ matchFrom: K = "any",
26
+ stringify: v,
27
+ trim: C = !1
28
+ } = c;
29
+ return (N, {
30
+ inputValue: L,
31
+ getOptionLabel: y
34
32
  }) => {
35
- let I = V ? F.trim() : F;
36
- h && (I = I.toLowerCase()), b && (I = Ue(I));
37
- const U = I ? M.filter((Y) => {
38
- let _ = (H || m)(Y);
39
- return h && (_ = _.toLowerCase()), b && (_ = Ue(_)), A === "start" ? _.indexOf(I) === 0 : _.indexOf(I) > -1;
40
- }) : M;
41
- return typeof $ == "number" ? U.slice(0, $) : U;
33
+ let S = C ? L.trim() : L;
34
+ g && (S = S.toLowerCase()), b && (S = Ve(S));
35
+ const q = S ? N.filter((z) => {
36
+ let w = (v || y)(z);
37
+ return g && (w = w.toLowerCase()), b && (w = Ve(w)), K === "start" ? w.indexOf(S) === 0 : w.indexOf(S) > -1;
38
+ }) : N;
39
+ return typeof D == "number" ? q.slice(0, D) : q;
42
40
  };
43
41
  }
44
- function me(u, b) {
45
- for (let h = 0; h < u.length; h += 1)
46
- if (b(u[h]))
47
- return h;
42
+ function ue(c, b) {
43
+ for (let g = 0; g < c.length; g += 1)
44
+ if (b(c[g]))
45
+ return g;
48
46
  return -1;
49
47
  }
50
- const yt = xt(), je = 5, Ot = (u) => {
48
+ const bt = mt(), Me = 5, yt = (c) => {
51
49
  var b;
52
- return u.current !== null && ((b = u.current.parentElement) == null ? void 0 : b.contains(document.activeElement));
50
+ return c.current !== null && ((b = c.current.parentElement) == null ? void 0 : b.contains(document.activeElement));
53
51
  };
54
- function It(u) {
52
+ function xt(c) {
55
53
  const {
56
54
  // eslint-disable-next-line @typescript-eslint/naming-convention
57
- unstable_isActiveElementInListbox: b = Ot,
55
+ unstable_isActiveElementInListbox: b = yt,
58
56
  // eslint-disable-next-line @typescript-eslint/naming-convention
59
- unstable_classNamePrefix: h = "Mui",
60
- autoComplete: $ = !1,
61
- autoHighlight: A = !1,
62
- autoSelect: H = !1,
63
- blurOnSelect: V = !1,
64
- clearOnBlur: M = !u.freeSolo,
65
- clearOnEscape: F = !1,
66
- componentName: m = "useAutocomplete",
67
- defaultValue: I = u.multiple ? [] : null,
68
- disableClearable: U = !1,
69
- disableCloseOnSelect: Y = !1,
70
- disabled: _,
71
- disabledItemsFocusable: be = !1,
72
- disableListWrap: ee = !1,
73
- filterOptions: xe = yt,
74
- filterSelectedOptions: te = !1,
75
- freeSolo: R = !1,
76
- getOptionDisabled: q,
77
- getOptionKey: ne,
78
- getOptionLabel: re = (t) => {
57
+ unstable_classNamePrefix: g = "Mui",
58
+ autoComplete: D = !1,
59
+ autoHighlight: K = !1,
60
+ autoSelect: v = !1,
61
+ blurOnSelect: C = !1,
62
+ clearOnBlur: N = !c.freeSolo,
63
+ clearOnEscape: L = !1,
64
+ componentName: y = "useAutocomplete",
65
+ defaultValue: S = c.multiple ? [] : null,
66
+ disableClearable: q = !1,
67
+ disableCloseOnSelect: z = !1,
68
+ disabled: w,
69
+ disabledItemsFocusable: ce = !1,
70
+ disableListWrap: J = !1,
71
+ filterOptions: pe = bt,
72
+ filterSelectedOptions: Q = !1,
73
+ freeSolo: i = !1,
74
+ getOptionDisabled: m,
75
+ getOptionKey: j,
76
+ getOptionLabel: V = (t) => {
79
77
  var e;
80
78
  return (e = t.label) != null ? e : t;
81
79
  },
82
- groupBy: j,
83
- handleHomeEndKeys: oe = !u.freeSolo,
84
- id: ye,
85
- includeInputInList: se = !1,
86
- inputValue: Oe,
87
- isOptionEqualToValue: D = (t, e) => t === e,
88
- multiple: i = !1,
89
- onChange: W,
90
- onClose: ie,
91
- onHighlightChange: le,
92
- onInputChange: E,
93
- onOpen: c,
94
- open: v,
95
- openOnFocus: Je = !1,
96
- options: Ie,
97
- readOnly: X = !1,
98
- selectOnFocus: Ye = !u.freeSolo,
99
- value: We
100
- } = u, k = mt(ye);
101
- let y = re;
102
- y = (t) => {
103
- const e = re(t);
80
+ groupBy: _,
81
+ handleHomeEndKeys: Z = !c.freeSolo,
82
+ id: fe,
83
+ includeInputInList: Oe = !1,
84
+ inputValue: Re,
85
+ isOptionEqualToValue: M = (t, e) => t === e,
86
+ multiple: u = !1,
87
+ onChange: Ie,
88
+ onClose: Se,
89
+ onHighlightChange: we,
90
+ onInputChange: R,
91
+ onOpen: ke,
92
+ open: He,
93
+ openOnFocus: Fe = !1,
94
+ options: de,
95
+ readOnly: W = !1,
96
+ selectOnFocus: qe = !c.freeSolo,
97
+ value: Be
98
+ } = c, E = gt(fe);
99
+ let O = V;
100
+ O = (t) => {
101
+ const e = V(t);
104
102
  if (typeof e != "string") {
105
103
  if (process.env.NODE_ENV !== "production") {
106
- const n = e === void 0 ? "undefined" : `${typeof e} (${e})`;
107
- console.error(`MUI: The \`getOptionLabel\` method of ${m} returned ${n} instead of a string for ${JSON.stringify(t)}.`);
104
+ const r = e === void 0 ? "undefined" : `${typeof e} (${e})`;
105
+ console.error(`MUI: The \`getOptionLabel\` method of ${y} returned ${r} instead of a string for ${JSON.stringify(t)}.`);
108
106
  }
109
107
  return String(e);
110
108
  }
111
109
  return e;
112
110
  };
113
- const _e = g.useRef(!1), we = g.useRef(!0), d = g.useRef(null), N = g.useRef(null), [ae, Xe] = g.useState(null), [S, ke] = g.useState(-1), $e = A ? 0 : -1, x = g.useRef($e), [r, Ge] = Te({
114
- controlled: We,
115
- default: I,
116
- name: m
117
- }), [a, ue] = Te({
118
- controlled: Oe,
111
+ const ge = h.useRef(!1), he = h.useRef(!0), f = h.useRef(null), T = h.useRef(null), [ee, Ue] = h.useState(null), [$, me] = h.useState(-1), Ee = K ? 0 : -1, x = h.useRef(Ee), [o, Ke] = _e({
112
+ controlled: Be,
113
+ default: S,
114
+ name: y
115
+ }), [a, te] = _e({
116
+ controlled: Re,
119
117
  default: "",
120
- name: m,
118
+ name: y,
121
119
  state: "inputValue"
122
- }), [ce, Ae] = g.useState(!1), fe = g.useCallback((t, e) => {
123
- if (!(i ? r.length < e.length : e !== null) && !M)
120
+ }), [re, Te] = h.useState(!1), oe = h.useCallback((t, e) => {
121
+ if (!(u ? o.length < e.length : e !== null) && !N)
124
122
  return;
125
- let o;
126
- if (i)
127
- o = "";
123
+ let n;
124
+ if (u)
125
+ n = "";
128
126
  else if (e == null)
129
- o = "";
127
+ n = "";
130
128
  else {
131
- const s = y(e);
132
- o = typeof s == "string" ? s : "";
129
+ const s = O(e);
130
+ n = typeof s == "string" ? s : "";
133
131
  }
134
- a !== o && (ue(o), E && E(t, o, "reset"));
135
- }, [y, a, i, E, ue, M, r]), [z, De] = Te({
136
- controlled: v,
132
+ a !== n && (te(n), R && R(t, n, "reset"));
133
+ }, [O, a, u, R, te, N, o]), [B, $e] = _e({
134
+ controlled: He,
137
135
  default: !1,
138
- name: m,
136
+ name: y,
139
137
  state: "open"
140
- }), [Qe, Ee] = g.useState(!0), ve = !i && r != null && a === y(r), w = z && !X, f = w ? xe(
141
- Ie.filter((t) => !(te && (i ? r : [r]).some((e) => e !== null && D(t, e)))),
138
+ }), [ze, Pe] = h.useState(!0), Ae = !u && o != null && a === O(o), k = B && !W, p = k ? pe(
139
+ de.filter((t) => !(Q && (u ? o : [o]).some((e) => e !== null && M(t, e)))),
142
140
  // we use the empty string to manipulate `filterOptions` to not filter any options
143
141
  // i.e. the filter predicate always returns true
144
142
  {
145
- inputValue: ve && Qe ? "" : a,
146
- getOptionLabel: y
143
+ inputValue: Ae && ze ? "" : a,
144
+ getOptionLabel: O
147
145
  }
148
- ) : [], C = bt({
149
- filteredOptions: f,
150
- value: r,
146
+ ) : [], P = ht({
147
+ filteredOptions: p,
148
+ value: o,
151
149
  inputValue: a
152
150
  });
153
- g.useEffect(() => {
154
- const t = r !== C.value;
155
- ce && !t || R && !t || fe(null, r);
156
- }, [r, fe, ce, C.value, R]);
157
- const Ne = z && f.length > 0 && !X;
158
- if (process.env.NODE_ENV !== "production" && r !== null && !R && Ie.length > 0) {
159
- const t = (i ? r : [r]).filter((e) => !Ie.some((n) => D(n, e)));
160
- t.length > 0 && console.warn([`MUI: The value provided to ${m} is invalid.`, `None of the options match with \`${t.length > 1 ? JSON.stringify(t) : JSON.stringify(t[0])}\`.`, "You can use the `isOptionEqualToValue` prop to customize the equality test."].join(`
151
+ h.useEffect(() => {
152
+ const t = o !== P.value;
153
+ re && !t || i && !t || oe(null, o);
154
+ }, [o, oe, re, P.value, i]);
155
+ const be = B && p.length > 0 && !W;
156
+ if (process.env.NODE_ENV !== "production" && o !== null && !i && de.length > 0) {
157
+ const t = (u ? o : [o]).filter((e) => !de.some((r) => M(r, e)));
158
+ t.length > 0 && console.warn([`MUI: The value provided to ${y} is invalid.`, `None of the options match with \`${t.length > 1 ? JSON.stringify(t) : JSON.stringify(t[0])}\`.`, "You can use the `isOptionEqualToValue` prop to customize the equality test."].join(`
161
159
  `));
162
160
  }
163
- const de = he((t) => {
164
- t === -1 ? d.current.focus() : ae.querySelector(`[data-tag-index="${t}"]`).focus();
161
+ const ne = ae((t) => {
162
+ t === -1 ? f.current.focus() : ee.querySelector(`[data-tag-index="${t}"]`).focus();
165
163
  });
166
- g.useEffect(() => {
167
- i && S > r.length - 1 && (ke(-1), de(-1));
168
- }, [r, i, S, de]);
169
- function Ze(t, e) {
170
- if (!N.current || t < 0 || t >= f.length)
164
+ h.useEffect(() => {
165
+ u && $ > o.length - 1 && (me(-1), ne(-1));
166
+ }, [o, u, $, ne]);
167
+ function Je(t, e) {
168
+ if (!T.current || t < 0 || t >= p.length)
171
169
  return -1;
172
- let n = t;
170
+ let r = t;
173
171
  for (; ; ) {
174
- const o = N.current.querySelector(`[data-option-index="${n}"]`), s = be ? !1 : !o || o.disabled || o.getAttribute("aria-disabled") === "true";
175
- if (o && o.hasAttribute("tabindex") && !s)
176
- return n;
177
- if (e === "next" ? n = (n + 1) % f.length : n = (n - 1 + f.length) % f.length, n === t)
172
+ const n = T.current.querySelector(`[data-option-index="${r}"]`), s = ce ? !1 : !n || n.disabled || n.getAttribute("aria-disabled") === "true";
173
+ if (n && n.hasAttribute("tabindex") && !s)
174
+ return r;
175
+ if (e === "next" ? r = (r + 1) % p.length : r = (r - 1 + p.length) % p.length, r === t)
178
176
  return -1;
179
177
  }
180
178
  }
181
- const B = he(({
179
+ const H = ae(({
182
180
  event: t,
183
181
  index: e,
184
- reason: n = "auto"
182
+ reason: r = "auto"
185
183
  }) => {
186
- if (x.current = e, e === -1 ? d.current.removeAttribute("aria-activedescendant") : d.current.setAttribute("aria-activedescendant", `${k}-option-${e}`), le && le(t, e === -1 ? null : f[e], n), !N.current)
184
+ if (x.current = e, e === -1 ? f.current.removeAttribute("aria-activedescendant") : f.current.setAttribute("aria-activedescendant", `${E}-option-${e}`), we && we(t, e === -1 ? null : p[e], r), !T.current)
187
185
  return;
188
- const o = N.current.querySelector(`[role="option"].${h}-focused`);
189
- o && (o.classList.remove(`${h}-focused`), o.classList.remove(`${h}-focusVisible`));
190
- let s = N.current;
191
- if (N.current.getAttribute("role") !== "listbox" && (s = N.current.parentElement.querySelector('[role="listbox"]')), !s)
186
+ const n = T.current.querySelector(`[role="option"].${g}-focused`);
187
+ n && (n.classList.remove(`${g}-focused`), n.classList.remove(`${g}-focusVisible`));
188
+ let s = T.current;
189
+ if (T.current.getAttribute("role") !== "listbox" && (s = T.current.parentElement.querySelector('[role="listbox"]')), !s)
192
190
  return;
193
191
  if (e === -1) {
194
192
  s.scrollTop = 0;
195
193
  return;
196
194
  }
197
- const l = N.current.querySelector(`[data-option-index="${e}"]`);
198
- if (l && (l.classList.add(`${h}-focused`), n === "keyboard" && l.classList.add(`${h}-focusVisible`), s.scrollHeight > s.clientHeight && n !== "mouse" && n !== "touch")) {
199
- const p = l, O = s.clientHeight + s.scrollTop, ge = p.offsetTop + p.offsetHeight;
200
- ge > O ? s.scrollTop = ge - s.clientHeight : p.offsetTop - p.offsetHeight * (j ? 1.3 : 0) < s.scrollTop && (s.scrollTop = p.offsetTop - p.offsetHeight * (j ? 1.3 : 0));
195
+ const l = T.current.querySelector(`[data-option-index="${e}"]`);
196
+ if (l && (l.classList.add(`${g}-focused`), r === "keyboard" && l.classList.add(`${g}-focusVisible`), s.scrollHeight > s.clientHeight && r !== "mouse" && r !== "touch")) {
197
+ const d = l, I = s.clientHeight + s.scrollTop, ie = d.offsetTop + d.offsetHeight;
198
+ ie > I ? s.scrollTop = ie - s.clientHeight : d.offsetTop - d.offsetHeight * (_ ? 1.3 : 0) < s.scrollTop && (s.scrollTop = d.offsetTop - d.offsetHeight * (_ ? 1.3 : 0));
201
199
  }
202
- }), L = he(({
200
+ }), A = ae(({
203
201
  event: t,
204
202
  diff: e,
205
- direction: n = "next",
206
- reason: o = "auto"
203
+ direction: r = "next",
204
+ reason: n = "auto"
207
205
  }) => {
208
- if (!w)
206
+ if (!k)
209
207
  return;
210
- const l = Ze((() => {
211
- const p = f.length - 1;
208
+ const l = Je((() => {
209
+ const d = p.length - 1;
212
210
  if (e === "reset")
213
- return $e;
211
+ return Ee;
214
212
  if (e === "start")
215
213
  return 0;
216
214
  if (e === "end")
217
- return p;
218
- const O = x.current + e;
219
- return O < 0 ? O === -1 && se ? -1 : ee && x.current !== -1 || Math.abs(e) > 1 ? 0 : p : O > p ? O === p + 1 && se ? -1 : ee || Math.abs(e) > 1 ? p : 0 : O;
220
- })(), n);
221
- if (B({
215
+ return d;
216
+ const I = x.current + e;
217
+ return I < 0 ? I === -1 && Oe ? -1 : J && x.current !== -1 || Math.abs(e) > 1 ? 0 : d : I > d ? I === d + 1 && Oe ? -1 : J || Math.abs(e) > 1 ? d : 0 : I;
218
+ })(), r);
219
+ if (H({
222
220
  index: l,
223
- reason: o,
221
+ reason: n,
224
222
  event: t
225
- }), $ && e !== "reset")
223
+ }), D && e !== "reset")
226
224
  if (l === -1)
227
- d.current.value = a;
225
+ f.current.value = a;
228
226
  else {
229
- const p = y(f[l]);
230
- d.current.value = p, p.toLowerCase().indexOf(a.toLowerCase()) === 0 && a.length > 0 && d.current.setSelectionRange(a.length, p.length);
227
+ const d = O(p[l]);
228
+ f.current.value = d, d.toLowerCase().indexOf(a.toLowerCase()) === 0 && a.length > 0 && f.current.setSelectionRange(a.length, d.length);
231
229
  }
232
- }), et = () => {
233
- const t = (e, n) => {
234
- const o = e ? y(e) : "", s = n ? y(n) : "";
235
- return o === s;
230
+ }), We = () => {
231
+ const t = (e, r) => {
232
+ const n = e ? O(e) : "", s = r ? O(r) : "";
233
+ return n === s;
236
234
  };
237
- if (x.current !== -1 && C.filteredOptions && C.filteredOptions.length !== f.length && C.inputValue === a && (i ? r.length === C.value.length && C.value.every((e, n) => y(r[n]) === y(e)) : t(C.value, r))) {
238
- const e = C.filteredOptions[x.current];
235
+ if (x.current !== -1 && P.filteredOptions && P.filteredOptions.length !== p.length && P.inputValue === a && (u ? o.length === P.value.length && P.value.every((e, r) => O(o[r]) === O(e)) : t(P.value, o))) {
236
+ const e = P.filteredOptions[x.current];
239
237
  if (e)
240
- return me(f, (n) => y(n) === y(e));
238
+ return ue(p, (r) => O(r) === O(e));
241
239
  }
242
240
  return -1;
243
- }, Se = g.useCallback(() => {
244
- if (!w)
241
+ }, ye = h.useCallback(() => {
242
+ if (!k)
245
243
  return;
246
- const t = et();
244
+ const t = We();
247
245
  if (t !== -1) {
248
246
  x.current = t;
249
247
  return;
250
248
  }
251
- const e = i ? r[0] : r;
252
- if (f.length === 0 || e == null) {
253
- L({
249
+ const e = u ? o[0] : o;
250
+ if (p.length === 0 || e == null) {
251
+ A({
254
252
  diff: "reset"
255
253
  });
256
254
  return;
257
255
  }
258
- if (N.current) {
256
+ if (T.current) {
259
257
  if (e != null) {
260
- const n = f[x.current];
261
- if (i && n && me(r, (s) => D(n, s)) !== -1)
258
+ const r = p[x.current];
259
+ if (u && r && ue(o, (s) => M(r, s)) !== -1)
262
260
  return;
263
- const o = me(f, (s) => D(s, e));
264
- o === -1 ? L({
261
+ const n = ue(p, (s) => M(s, e));
262
+ n === -1 ? A({
265
263
  diff: "reset"
266
- }) : B({
267
- index: o
264
+ }) : H({
265
+ index: n
268
266
  });
269
267
  return;
270
268
  }
271
- if (x.current >= f.length - 1) {
272
- B({
273
- index: f.length - 1
269
+ if (x.current >= p.length - 1) {
270
+ H({
271
+ index: p.length - 1
274
272
  });
275
273
  return;
276
274
  }
277
- B({
275
+ H({
278
276
  index: x.current
279
277
  });
280
278
  }
281
279
  }, [
282
280
  // Only sync the highlighted index when the option switch between empty and not
283
- f.length,
281
+ p.length,
284
282
  // Don't sync the highlighted index with the value when multiple
285
283
  // eslint-disable-next-line react-hooks/exhaustive-deps
286
- i ? !1 : r,
287
- te,
288
- L,
289
- B,
290
- w,
284
+ u ? !1 : o,
285
+ Q,
286
+ A,
287
+ H,
288
+ k,
291
289
  a,
292
- i
293
- ]), tt = he((t) => {
294
- ht(N, t), t && Se();
290
+ u
291
+ ]), Ye = ae((t) => {
292
+ dt(T, t), t && ye();
295
293
  });
296
- process.env.NODE_ENV !== "production" && g.useEffect(() => {
297
- (!d.current || d.current.nodeName !== "INPUT") && (d.current && d.current.nodeName === "TEXTAREA" ? console.warn([`A textarea element was provided to ${m} where input was expected.`, "This is not a supported scenario but it may work under certain conditions.", "A textarea keyboard navigation may conflict with Autocomplete controls (for example enter and arrow keys).", "Make sure to test keyboard navigation and add custom event handlers if necessary."].join(`
298
- `)) : console.error([`MUI: Unable to find the input element. It was resolved to ${d.current} while an HTMLInputElement was expected.`, `Instead, ${m} expects an input element.`, "", m === "useAutocomplete" ? "Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed." : "Make sure you have customized the input component correctly."].join(`
294
+ process.env.NODE_ENV !== "production" && h.useEffect(() => {
295
+ (!f.current || f.current.nodeName !== "INPUT") && (f.current && f.current.nodeName === "TEXTAREA" ? console.warn([`A textarea element was provided to ${y} where input was expected.`, "This is not a supported scenario but it may work under certain conditions.", "A textarea keyboard navigation may conflict with Autocomplete controls (for example enter and arrow keys).", "Make sure to test keyboard navigation and add custom event handlers if necessary."].join(`
296
+ `)) : console.error([`MUI: Unable to find the input element. It was resolved to ${f.current} while an HTMLInputElement was expected.`, `Instead, ${y} expects an input element.`, "", y === "useAutocomplete" ? "Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed." : "Make sure you have customized the input component correctly."].join(`
299
297
  `)));
300
- }, [m]), g.useEffect(() => {
301
- Se();
302
- }, [Se]);
303
- const K = (t) => {
304
- z || (De(!0), Ee(!0), c && c(t));
305
- }, G = (t, e) => {
306
- z && (De(!1), ie && ie(t, e));
307
- }, J = (t, e, n, o) => {
308
- if (i) {
309
- if (r.length === e.length && r.every((s, l) => s === e[l]))
298
+ }, [y]), h.useEffect(() => {
299
+ ye();
300
+ }, [ye]);
301
+ const F = (t) => {
302
+ B || ($e(!0), Pe(!0), ke && ke(t));
303
+ }, Y = (t, e) => {
304
+ B && ($e(!1), Se && Se(t, e));
305
+ }, U = (t, e, r, n) => {
306
+ if (u) {
307
+ if (o.length === e.length && o.every((s, l) => s === e[l]))
310
308
  return;
311
- } else if (r === e)
309
+ } else if (o === e)
312
310
  return;
313
- W && W(t, e, n, o), Ge(e);
314
- }, pe = g.useRef(!1), Q = (t, e, n = "selectOption", o = "options") => {
315
- let s = n, l = e;
316
- if (i) {
317
- if (l = Array.isArray(r) ? r.slice() : [], process.env.NODE_ENV !== "production") {
318
- const O = l.filter((ge) => D(e, ge));
319
- O.length > 1 && console.error([`MUI: The \`isOptionEqualToValue\` method of ${m} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${O.length} matches.`].join(`
311
+ Ie && Ie(t, e, r, n), Ke(e);
312
+ }, se = h.useRef(!1), X = (t, e, r = "selectOption", n = "options") => {
313
+ let s = r, l = e;
314
+ if (u) {
315
+ if (l = Array.isArray(o) ? o.slice() : [], process.env.NODE_ENV !== "production") {
316
+ const I = l.filter((ie) => M(e, ie));
317
+ I.length > 1 && console.error([`MUI: The \`isOptionEqualToValue\` method of ${y} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${I.length} matches.`].join(`
320
318
  `));
321
319
  }
322
- const p = me(l, (O) => D(e, O));
323
- p === -1 ? l.push(e) : o !== "freeSolo" && (l.splice(p, 1), s = "removeOption");
320
+ const d = ue(l, (I) => M(e, I));
321
+ d === -1 ? l.push(e) : n !== "freeSolo" && (l.splice(d, 1), s = "removeOption");
324
322
  }
325
- fe(t, l), J(t, l, s, {
323
+ oe(t, l), U(t, l, s, {
326
324
  option: e
327
- }), !Y && (!t || !t.ctrlKey && !t.metaKey) && G(t, s), (V === !0 || V === "touch" && pe.current || V === "mouse" && !pe.current) && d.current.blur();
325
+ }), !z && (!t || !t.ctrlKey && !t.metaKey) && Y(t, s), (C === !0 || C === "touch" && se.current || C === "mouse" && !se.current) && f.current.blur();
328
326
  };
329
- function nt(t, e) {
327
+ function Xe(t, e) {
330
328
  if (t === -1)
331
329
  return -1;
332
- let n = t;
330
+ let r = t;
333
331
  for (; ; ) {
334
- if (e === "next" && n === r.length || e === "previous" && n === -1)
332
+ if (e === "next" && r === o.length || e === "previous" && r === -1)
335
333
  return -1;
336
- const o = ae.querySelector(`[data-tag-index="${n}"]`);
337
- if (!o || !o.hasAttribute("tabindex") || o.disabled || o.getAttribute("aria-disabled") === "true")
338
- n += e === "next" ? 1 : -1;
334
+ const n = ee.querySelector(`[data-tag-index="${r}"]`);
335
+ if (!n || !n.hasAttribute("tabindex") || n.disabled || n.getAttribute("aria-disabled") === "true")
336
+ r += e === "next" ? 1 : -1;
339
337
  else
340
- return n;
338
+ return r;
341
339
  }
342
340
  }
343
- const Ce = (t, e) => {
344
- if (!i)
341
+ const De = (t, e) => {
342
+ if (!u)
345
343
  return;
346
- a === "" && G(t, "toggleInput");
347
- let n = S;
348
- S === -1 ? a === "" && e === "previous" && (n = r.length - 1) : (n += e === "next" ? 1 : -1, n < 0 && (n = 0), n === r.length && (n = -1)), n = nt(n, e), ke(n), de(n);
349
- }, Le = (t) => {
350
- _e.current = !0, ue(""), E && E(t, "", "clear"), J(t, i ? [] : null, "clear");
351
- }, rt = (t) => (e) => {
352
- if (t.onKeyDown && t.onKeyDown(e), !e.defaultMuiPrevented && (S !== -1 && ["ArrowLeft", "ArrowRight"].indexOf(e.key) === -1 && (ke(-1), de(-1)), e.which !== 229))
344
+ a === "" && Y(t, "toggleInput");
345
+ let r = $;
346
+ $ === -1 ? a === "" && e === "previous" && (r = o.length - 1) : (r += e === "next" ? 1 : -1, r < 0 && (r = 0), r === o.length && (r = -1)), r = Xe(r, e), me(r), ne(r);
347
+ }, Ce = (t) => {
348
+ ge.current = !0, te(""), R && R(t, "", "clear"), U(t, u ? [] : null, "clear");
349
+ }, Ge = (t) => (e) => {
350
+ if (t.onKeyDown && t.onKeyDown(e), !e.defaultMuiPrevented && ($ !== -1 && ["ArrowLeft", "ArrowRight"].indexOf(e.key) === -1 && (me(-1), ne(-1)), e.which !== 229))
353
351
  switch (e.key) {
354
352
  case "Home":
355
- w && oe && (e.preventDefault(), L({
353
+ k && Z && (e.preventDefault(), A({
356
354
  diff: "start",
357
355
  direction: "next",
358
356
  reason: "keyboard",
@@ -360,7 +358,7 @@ function It(u) {
360
358
  }));
361
359
  break;
362
360
  case "End":
363
- w && oe && (e.preventDefault(), L({
361
+ k && Z && (e.preventDefault(), A({
364
362
  diff: "end",
365
363
  direction: "previous",
366
364
  reason: "keyboard",
@@ -368,187 +366,187 @@ function It(u) {
368
366
  }));
369
367
  break;
370
368
  case "PageUp":
371
- e.preventDefault(), L({
372
- diff: -je,
369
+ e.preventDefault(), A({
370
+ diff: -Me,
373
371
  direction: "previous",
374
372
  reason: "keyboard",
375
373
  event: e
376
- }), K(e);
374
+ }), F(e);
377
375
  break;
378
376
  case "PageDown":
379
- e.preventDefault(), L({
380
- diff: je,
377
+ e.preventDefault(), A({
378
+ diff: Me,
381
379
  direction: "next",
382
380
  reason: "keyboard",
383
381
  event: e
384
- }), K(e);
382
+ }), F(e);
385
383
  break;
386
384
  case "ArrowDown":
387
- e.preventDefault(), L({
385
+ e.preventDefault(), A({
388
386
  diff: 1,
389
387
  direction: "next",
390
388
  reason: "keyboard",
391
389
  event: e
392
- }), K(e);
390
+ }), F(e);
393
391
  break;
394
392
  case "ArrowUp":
395
- e.preventDefault(), L({
393
+ e.preventDefault(), A({
396
394
  diff: -1,
397
395
  direction: "previous",
398
396
  reason: "keyboard",
399
397
  event: e
400
- }), K(e);
398
+ }), F(e);
401
399
  break;
402
400
  case "ArrowLeft":
403
- Ce(e, "previous");
401
+ De(e, "previous");
404
402
  break;
405
403
  case "ArrowRight":
406
- Ce(e, "next");
404
+ De(e, "next");
407
405
  break;
408
406
  case "Enter":
409
- if (x.current !== -1 && w) {
410
- const n = f[x.current], o = q ? q(n) : !1;
411
- if (e.preventDefault(), o)
407
+ if (x.current !== -1 && k) {
408
+ const r = p[x.current], n = m ? m(r) : !1;
409
+ if (e.preventDefault(), n)
412
410
  return;
413
- Q(e, n, "selectOption"), $ && d.current.setSelectionRange(d.current.value.length, d.current.value.length);
411
+ X(e, r, "selectOption"), D && f.current.setSelectionRange(f.current.value.length, f.current.value.length);
414
412
  } else
415
- R && a !== "" && ve === !1 && (i && e.preventDefault(), Q(e, a, "createOption", "freeSolo"));
413
+ i && a !== "" && Ae === !1 && (u && e.preventDefault(), X(e, a, "createOption", "freeSolo"));
416
414
  break;
417
415
  case "Escape":
418
- w ? (e.preventDefault(), e.stopPropagation(), G(e, "escape")) : F && (a !== "" || i && r.length > 0) && (e.preventDefault(), e.stopPropagation(), Le(e));
416
+ k ? (e.preventDefault(), e.stopPropagation(), Y(e, "escape")) : L && (a !== "" || u && o.length > 0) && (e.preventDefault(), e.stopPropagation(), Ce(e));
419
417
  break;
420
418
  case "Backspace":
421
- if (i && !X && a === "" && r.length > 0) {
422
- const n = S === -1 ? r.length - 1 : S, o = r.slice();
423
- o.splice(n, 1), J(e, o, "removeOption", {
424
- option: r[n]
419
+ if (u && !W && a === "" && o.length > 0) {
420
+ const r = $ === -1 ? o.length - 1 : $, n = o.slice();
421
+ n.splice(r, 1), U(e, n, "removeOption", {
422
+ option: o[r]
425
423
  });
426
424
  }
427
425
  break;
428
426
  case "Delete":
429
- if (i && !X && a === "" && r.length > 0 && S !== -1) {
430
- const n = S, o = r.slice();
431
- o.splice(n, 1), J(e, o, "removeOption", {
432
- option: r[n]
427
+ if (u && !W && a === "" && o.length > 0 && $ !== -1) {
428
+ const r = $, n = o.slice();
429
+ n.splice(r, 1), U(e, n, "removeOption", {
430
+ option: o[r]
433
431
  });
434
432
  }
435
433
  break;
436
434
  }
437
- }, ot = (t) => {
438
- Ae(!0), Je && !_e.current && K(t);
439
- }, Ve = (t) => {
440
- if (b(N)) {
441
- d.current.focus();
435
+ }, Qe = (t) => {
436
+ Te(!0), Fe && !ge.current && F(t);
437
+ }, Ne = (t) => {
438
+ if (b(T)) {
439
+ f.current.focus();
442
440
  return;
443
441
  }
444
- Ae(!1), we.current = !0, _e.current = !1, H && x.current !== -1 && w ? Q(t, f[x.current], "blur") : H && R && a !== "" ? Q(t, a, "blur", "freeSolo") : M && fe(t, r), G(t, "blur");
445
- }, st = (t) => {
442
+ Te(!1), he.current = !0, ge.current = !1, v && x.current !== -1 && k ? X(t, p[x.current], "blur") : v && i && a !== "" ? X(t, a, "blur", "freeSolo") : N && oe(t, o), Y(t, "blur");
443
+ }, Ze = (t) => {
446
444
  const e = t.target.value;
447
- a !== e && (ue(e), Ee(!1), E && E(t, e, "input")), e === "" ? !U && !i && J(t, null, "clear") : K(t);
448
- }, it = (t) => {
445
+ a !== e && (te(e), Pe(!1), R && R(t, e, "input")), e === "" ? !q && !u && U(t, null, "clear") : F(t);
446
+ }, et = (t) => {
449
447
  const e = Number(t.currentTarget.getAttribute("data-option-index"));
450
- x.current !== e && B({
448
+ x.current !== e && H({
451
449
  event: t,
452
450
  index: e,
453
451
  reason: "mouse"
454
452
  });
455
- }, lt = (t) => {
456
- B({
453
+ }, tt = (t) => {
454
+ H({
457
455
  event: t,
458
456
  index: Number(t.currentTarget.getAttribute("data-option-index")),
459
457
  reason: "touch"
460
- }), pe.current = !0;
461
- }, at = (t) => {
458
+ }), se.current = !0;
459
+ }, rt = (t) => {
462
460
  const e = Number(t.currentTarget.getAttribute("data-option-index"));
463
- Q(t, f[e], "selectOption"), pe.current = !1;
464
- }, ut = (t) => (e) => {
465
- const n = r.slice();
466
- n.splice(t, 1), J(e, n, "removeOption", {
467
- option: r[t]
461
+ X(t, p[e], "selectOption"), se.current = !1;
462
+ }, ot = (t) => (e) => {
463
+ const r = o.slice();
464
+ r.splice(t, 1), U(e, r, "removeOption", {
465
+ option: o[t]
468
466
  });
469
- }, Me = (t) => {
470
- z ? G(t, "toggleInput") : K(t);
471
- }, ct = (t) => {
472
- t.currentTarget.contains(t.target) && t.target.getAttribute("id") !== k && t.preventDefault();
473
- }, ft = (t) => {
474
- t.currentTarget.contains(t.target) && (d.current.focus(), Ye && we.current && d.current.selectionEnd - d.current.selectionStart === 0 && d.current.select(), we.current = !1);
475
- }, dt = (t) => {
476
- !_ && (a === "" || !z) && Me(t);
467
+ }, ve = (t) => {
468
+ B ? Y(t, "toggleInput") : F(t);
469
+ }, nt = (t) => {
470
+ t.currentTarget.contains(t.target) && t.target.getAttribute("id") !== E && t.preventDefault();
471
+ }, st = (t) => {
472
+ t.currentTarget.contains(t.target) && (f.current.focus(), qe && he.current && f.current.selectionEnd - f.current.selectionStart === 0 && f.current.select(), he.current = !1);
473
+ }, it = (t) => {
474
+ !w && (a === "" || !B) && ve(t);
477
475
  };
478
- let Pe = R && a.length > 0;
479
- Pe = Pe || (i ? r.length > 0 : r !== null);
480
- let Re = f;
481
- if (j) {
476
+ let xe = i && a.length > 0;
477
+ xe = xe || (u ? o.length > 0 : o !== null);
478
+ let Le = p;
479
+ if (_) {
482
480
  const t = /* @__PURE__ */ new Map();
483
481
  let e = !1;
484
- Re = f.reduce((n, o, s) => {
485
- const l = j(o);
486
- return n.length > 0 && n[n.length - 1].group === l ? n[n.length - 1].options.push(o) : (process.env.NODE_ENV !== "production" && (t.get(l) && !e && (console.warn(`MUI: The options provided combined with the \`groupBy\` method of ${m} returns duplicated headers.`, "You can solve the issue by sorting the options with the output of `groupBy`."), e = !0), t.set(l, !0)), n.push({
482
+ Le = p.reduce((r, n, s) => {
483
+ const l = _(n);
484
+ return r.length > 0 && r[r.length - 1].group === l ? r[r.length - 1].options.push(n) : (process.env.NODE_ENV !== "production" && (t.get(l) && !e && (console.warn(`MUI: The options provided combined with the \`groupBy\` method of ${y} returns duplicated headers.`, "You can solve the issue by sorting the options with the output of `groupBy`."), e = !0), t.set(l, !0)), r.push({
487
485
  key: s,
488
486
  index: s,
489
487
  group: l,
490
- options: [o]
491
- })), n;
488
+ options: [n]
489
+ })), r;
492
490
  }, []);
493
491
  }
494
- return _ && ce && Ve(), {
495
- getRootProps: (t = {}) => Ke({
496
- "aria-owns": Ne ? `${k}-listbox` : null
492
+ return w && re && Ne(), {
493
+ getRootProps: (t = {}) => je({
494
+ "aria-owns": be ? `${E}-listbox` : null
497
495
  }, t, {
498
- onKeyDown: rt(t),
499
- onMouseDown: ct,
500
- onClick: ft
496
+ onKeyDown: Ge(t),
497
+ onMouseDown: nt,
498
+ onClick: st
501
499
  }),
502
500
  getInputLabelProps: () => ({
503
- id: `${k}-label`,
504
- htmlFor: k
501
+ id: `${E}-label`,
502
+ htmlFor: E
505
503
  }),
506
504
  getInputProps: () => ({
507
- id: k,
505
+ id: E,
508
506
  value: a,
509
- onBlur: Ve,
510
- onFocus: ot,
511
- onChange: st,
512
- onMouseDown: dt,
507
+ onBlur: Ne,
508
+ onFocus: Qe,
509
+ onChange: Ze,
510
+ onMouseDown: it,
513
511
  // if open then this is handled imperatively so don't let react override
514
512
  // only have an opinion about this when closed
515
- "aria-activedescendant": w ? "" : null,
516
- "aria-autocomplete": $ ? "both" : "list",
517
- "aria-controls": Ne ? `${k}-listbox` : void 0,
518
- "aria-expanded": Ne,
513
+ "aria-activedescendant": k ? "" : null,
514
+ "aria-autocomplete": D ? "both" : "list",
515
+ "aria-controls": be ? `${E}-listbox` : void 0,
516
+ "aria-expanded": be,
519
517
  // Disable browser's suggestion that might overlap with the popup.
520
518
  // Handle autocomplete but not autofill.
521
519
  autoComplete: "off",
522
- ref: d,
520
+ ref: f,
523
521
  autoCapitalize: "none",
524
522
  spellCheck: "false",
525
523
  role: "combobox",
526
- disabled: _
524
+ disabled: w
527
525
  }),
528
526
  getClearProps: () => ({
529
527
  tabIndex: -1,
530
528
  type: "button",
531
- onClick: Le
529
+ onClick: Ce
532
530
  }),
533
531
  getPopupIndicatorProps: () => ({
534
532
  tabIndex: -1,
535
533
  type: "button",
536
- onClick: Me
534
+ onClick: ve
537
535
  }),
538
536
  getTagProps: ({
539
537
  index: t
540
- }) => Ke({
538
+ }) => je({
541
539
  key: t,
542
540
  "data-tag-index": t,
543
541
  tabIndex: -1
544
- }, !X && {
545
- onDelete: ut(t)
542
+ }, !W && {
543
+ onDelete: ot(t)
546
544
  }),
547
545
  getListboxProps: () => ({
548
546
  role: "listbox",
549
- id: `${k}-listbox`,
550
- "aria-labelledby": `${k}-label`,
551
- ref: tt,
547
+ id: `${E}-listbox`,
548
+ "aria-labelledby": `${E}-label`,
549
+ ref: Ye,
552
550
  onMouseDown: (t) => {
553
551
  t.preventDefault();
554
552
  }
@@ -557,133 +555,125 @@ function It(u) {
557
555
  index: t,
558
556
  option: e
559
557
  }) => {
560
- var n;
561
- const o = (i ? r : [r]).some((l) => l != null && D(e, l)), s = q ? q(e) : !1;
558
+ var r;
559
+ const n = (u ? o : [o]).some((l) => l != null && M(e, l)), s = m ? m(e) : !1;
562
560
  return {
563
- key: (n = ne == null ? void 0 : ne(e)) != null ? n : y(e),
561
+ key: (r = j == null ? void 0 : j(e)) != null ? r : O(e),
564
562
  tabIndex: -1,
565
563
  role: "option",
566
- id: `${k}-option-${t}`,
567
- onMouseMove: it,
568
- onClick: at,
569
- onTouchStart: lt,
564
+ id: `${E}-option-${t}`,
565
+ onMouseMove: et,
566
+ onClick: rt,
567
+ onTouchStart: tt,
570
568
  "data-option-index": t,
571
569
  "aria-disabled": s,
572
- "aria-selected": o
570
+ "aria-selected": n
573
571
  };
574
572
  },
575
- id: k,
573
+ id: E,
576
574
  inputValue: a,
577
- value: r,
578
- dirty: Pe,
579
- expanded: w && ae,
580
- popupOpen: w,
581
- focused: ce || S !== -1,
582
- anchorEl: ae,
583
- setAnchorEl: Xe,
584
- focusedTag: S,
585
- groupedOptions: Re
575
+ value: o,
576
+ dirty: xe,
577
+ expanded: k && ee,
578
+ popupOpen: k,
579
+ focused: re || $ !== -1,
580
+ anchorEl: ee,
581
+ setAnchorEl: Ue,
582
+ focusedTag: $,
583
+ groupedOptions: Le
586
584
  };
587
585
  }
588
- const _t = "_autocomplete_1mx2f_1", ze = {
586
+ const _t = "_autocomplete_mj65r_65", G = {
587
+ "u-typography-h1": "_u-typography-h1_mj65r_1",
588
+ "u-typography-h2": "_u-typography-h2_mj65r_8",
589
+ "u-typography-h3": "_u-typography-h3_mj65r_15",
590
+ "u-typography-h4": "_u-typography-h4_mj65r_22",
591
+ "u-typography-h5": "_u-typography-h5_mj65r_29",
592
+ "u-typography-h6": "_u-typography-h6_mj65r_36",
593
+ "u-typography-base": "_u-typography-base_mj65r_43",
594
+ "u-typography-base--xxl": "_u-typography-base--xxl_mj65r_49",
595
+ "u-typography-base--xl": "_u-typography-base--xl_mj65r_53",
596
+ "u-typography-base--lg": "_u-typography-base--lg_mj65r_57",
597
+ "u-typography-base--sm": "_u-typography-base--sm_mj65r_61",
598
+ "u-typography-base--bold": "_u-typography-base--bold_mj65r_65",
599
+ "autocomplete__dropdown-item": "_autocomplete__dropdown-item_mj65r_65",
600
+ "u-typography-base--strikethrough": "_u-typography-base--strikethrough_mj65r_68",
601
+ "u-typography-base--underlined": "_u-typography-base--underlined_mj65r_71",
602
+ "u-typography-base--strikethrough-underlined": "_u-typography-base--strikethrough-underlined_mj65r_74",
589
603
  autocomplete: _t,
590
- "autocomplete__dropdown-list": "_autocomplete__dropdown-list_1mx2f_4",
591
- "autocomplete__dropdown-item": "_autocomplete__dropdown-item_1mx2f_9"
592
- }, vt = ({
593
- label: u,
594
- type: b,
595
- options: h,
596
- infoMessage: $,
597
- errorMessage: A,
598
- leftIcon: H,
599
- rightIcon: V,
600
- id: M,
601
- disabled: F,
602
- maxLength: m,
603
- onChange: I,
604
- classNameLabel: U,
605
- classNameInput: Y,
606
- classNameErrorMessage: _,
607
- classNameInfoMessage: be,
608
- "data-testid-label": ee,
609
- "data-testid-input": xe,
610
- "data-testid-infoMessage": te,
611
- "data-testid-errorMessage": R,
612
- ...q
604
+ "autocomplete__dropdown-list": "_autocomplete__dropdown-list_mj65r_82",
605
+ "option-focused": "_option-focused_mj65r_106"
606
+ }, Pt = ({
607
+ labelKey: c,
608
+ valueKey: b,
609
+ options: g,
610
+ type: D,
611
+ value: K,
612
+ onChange: v,
613
+ onInputChange: C,
614
+ "data-testid-wrapper": N,
615
+ ...L
613
616
  }) => {
614
- const ne = pt(), re = M || `input_${ne}`;
615
- Object.assign(q, { "data-testid": xe });
616
- const [j, oe] = Fe(), [ye, se] = Fe(""), { getRootProps: Oe, getInputProps: D, getOptionProps: i, groupedOptions: W, getListboxProps: ie, focused: le, getInputLabelProps: E } = It({
617
- id: re,
618
- options: h,
619
- getOptionLabel: (c) => typeof c == "string" ? c : c == null ? void 0 : c.label,
620
- value: j,
621
- inputValue: ye,
622
- onChange: (c, v) => {
623
- I && I(c, v), oe(v);
617
+ const y = at(), [S, q] = ut("");
618
+ g != null && g.some((i) => typeof i != "string") && (!c || !b) && console.error(
619
+ '[autocomplete] When options is a list of objects, you must provide the "labelKey" and "valueKey" parameters.'
620
+ );
621
+ const { getRootProps: z, getInputProps: w, getOptionProps: ce, groupedOptions: J, getListboxProps: pe } = xt({
622
+ id: `autocomplete_${y}`,
623
+ options: g,
624
+ getOptionLabel: (i) => typeof i == "string" ? i : String(i[c || "label"]),
625
+ value: K,
626
+ inputValue: S,
627
+ isOptionEqualToValue: (i, m) => typeof i == "string" ? String(i) === String(m) : String(i[b || "id"]) === String(m[b || "id"]),
628
+ onChange: (i, m) => {
629
+ v && v(i, m);
624
630
  },
625
- onInputChange: (c, v) => {
626
- se(v);
631
+ onInputChange: (i, m) => {
632
+ C && C(i, m), q(m);
633
+ },
634
+ onHighlightChange: (i, m, j) => {
635
+ var V;
636
+ if (j === "keyboard") {
637
+ const _ = document.querySelector("#autocomplete-list"), Z = (i == null ? void 0 : i.target).getAttribute("aria-activedescendant");
638
+ _ == null || _.querySelectorAll("li").forEach((fe) => fe.classList.remove(G["option-focused"])), (V = _ == null ? void 0 : _.querySelector(`[id="${Z}"]`)) == null || V.classList.add(G["option-focused"]);
639
+ }
627
640
  }
628
- });
629
- return /* @__PURE__ */ He("div", { className: "autocomplete", children: [
630
- u && /* @__PURE__ */ T(
631
- Be,
641
+ }), Q = {
642
+ ...w(),
643
+ ...L
644
+ };
645
+ return /* @__PURE__ */ le("div", { className: G.autocomplete, "data-testid": N, children: /* @__PURE__ */ lt("div", { ...z(), children: [
646
+ /* @__PURE__ */ le(
647
+ ft,
632
648
  {
633
- element: "label",
634
- elementProps: { ...E() },
635
- className: Z(P.input__label, U),
636
- "data-testid": ee,
637
- children: u
649
+ rightIcon: D === "search" && /* @__PURE__ */ le(pt, { color: "var(--accent)", icon: "magnifying-glass" }),
650
+ ...Q
638
651
  }
639
652
  ),
640
- /* @__PURE__ */ T("div", { ...Oe(), className: le ? "Mui-focused" : "", children: /* @__PURE__ */ T(
641
- gt,
642
- {
643
- disabled: F,
644
- error: !!A,
645
- "aria-label": u,
646
- slotProps: {
647
- root: (c) => ({
648
- className: Z(P["input__input-el-wrapper"], {
649
- [P["input--disabled"]]: c.disabled,
650
- [P["input--focused"]]: c.focused,
651
- [P["input--error"]]: c.error
652
- })
653
- }),
654
- input: {
655
- ...D(),
656
- className: Z(P["input__input-el"], Y),
657
- maxLength: m,
658
- ...q
659
- }
660
- },
661
- startAdornment: H && /* @__PURE__ */ T("span", { className: P["input__left-icon"], children: H }),
662
- endAdornment: b === "search" ? /* @__PURE__ */ T("span", { className: P["input__right-icon"], children: /* @__PURE__ */ T(qe, { color: "var(--accent)", icon: "magnifying-glass" }) }) : V && /* @__PURE__ */ T("span", { className: P["input__right-icon"], children: V })
663
- }
664
- ) }),
665
- W.length > 0 && !F && /* @__PURE__ */ T("ul", { ...ie(), className: ze["autocomplete__dropdown-list"], children: W.map((c, v) => /* @__PURE__ */ T(
666
- "li",
667
- {
668
- tabIndex: v,
669
- className: ze["autocomplete__dropdown-item"],
670
- ...i({ option: c, index: v }),
671
- children: typeof c == "string" ? c : c == null ? void 0 : c.label
672
- }
673
- )) }),
674
- (A || $) && /* @__PURE__ */ He(
675
- Be,
653
+ J.length > 0 && !L.disabled && /* @__PURE__ */ le(
654
+ "ul",
676
655
  {
677
- className: A ? Z(P["input__error-message"], _) : Z(P["input__info-message"], be),
678
- "data-testid": A ? R : te,
679
- children: [
680
- /* @__PURE__ */ T(qe, { icon: "circle-exclamation" }),
681
- A || $
682
- ]
656
+ ...pe(),
657
+ id: "autocomplete-list",
658
+ className: G["autocomplete__dropdown-list"],
659
+ children: J.map((i, m) => {
660
+ const j = ce({ option: i, index: m }), V = typeof i == "string" ? i : String(i[c || "label"]), _ = j.key === S;
661
+ return /* @__PURE__ */ ct(
662
+ "li",
663
+ {
664
+ tabIndex: m,
665
+ className: G["autocomplete__dropdown-item"],
666
+ ...j,
667
+ "aria-selected": _,
668
+ key: String(m)
669
+ },
670
+ V
671
+ );
672
+ })
683
673
  }
684
674
  )
685
- ] });
675
+ ] }) });
686
676
  };
687
677
  export {
688
- vt as Autocomplete
678
+ Pt as Autocomplete
689
679
  };