iguazio.dashboard-react-controls 3.1.7 → 3.1.9

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.
@@ -1 +1 @@
1
- {"version":3,"file":"FormCombobox.d.ts","sourceRoot":"","sources":["../../../src/lib/components/FormCombobox/FormCombobox.jsx"],"names":[],"mappings":";AAuCA;;;;;;;;;;;;;;;;;;;;;;;;;;gBAobC;;;;;;;;;;;;;;;;;;;;;;;;;;wBA7b0E,aAAa;yCAAb,aAAa"}
1
+ {"version":3,"file":"FormCombobox.d.ts","sourceRoot":"","sources":["../../../src/lib/components/FormCombobox/FormCombobox.jsx"],"names":[],"mappings":";AAuCA;;;;;;;;;;;;;;;;;;;;;;;;;;gBAgcC;;;;;;;;;;;;;;;;;;;;;;;;;;wBAzc0E,aAAa;yCAAb,aAAa"}
@@ -1,17 +1,17 @@
1
- import { jsx as l, jsxs as u } from "react/jsx-runtime";
2
- import { useState as c, useRef as R, useEffect as C, useCallback as K } from "react";
1
+ import { jsx as t, jsxs as u } from "react/jsx-runtime";
2
+ import { useState as d, useRef as R, useEffect as C, useCallback as K } from "react";
3
3
  import { useField as Ee, Field as Oe } from "react-final-form";
4
4
  import { isEmpty as q } from "lodash";
5
- import t from "prop-types";
6
- import h from "classnames";
7
- import ke from "../../elements/OptionsMenu/OptionsMenu.mjs";
8
- import Re from "../../elements/ValidationTemplate/ValidationTemplate.mjs";
5
+ import i from "prop-types";
6
+ import _ from "classnames";
7
+ import Te from "../../elements/OptionsMenu/OptionsMenu.mjs";
8
+ import ke from "../../elements/ValidationTemplate/ValidationTemplate.mjs";
9
9
  import Q from "../PopUpDialog/PopUpDialog.mjs";
10
- import Te from "../TooltipTemplate/TextTooltipTemplate.mjs";
10
+ import Re from "../TooltipTemplate/TextTooltipTemplate.mjs";
11
11
  import Fe from "../Tooltip/Tooltip.mjs";
12
- import { checkPatternsValidity as De } from "../../utils/validation.util.mjs";
12
+ import { checkPatternsValidity as $e } from "../../utils/validation.util.mjs";
13
13
  import "../../hooks/index.mjs";
14
- import { COMBOBOX_SUGGESTION_LIST as Le, COMBOBOX_SELECT_OPTIONS as $e, DENSITY as Ae } from "../../types.mjs";
14
+ import { COMBOBOX_SUGGESTION_LIST as De, COMBOBOX_SELECT_OPTIONS as Le, DENSITY as Ae } from "../../types.mjs";
15
15
  import Pe from "../../images/arrow.svg.mjs";
16
16
  import je from "../../images/search.svg.mjs";
17
17
  import Me from "../../images/warning.svg.mjs";
@@ -23,16 +23,16 @@ const Be = ({
23
23
  density: ee = "normal",
24
24
  disabled: W = !1,
25
25
  hideSearchInput: oe = !1,
26
- inputDefaultValue: le = "",
27
- inputPlaceholder: ie = "",
26
+ inputDefaultValue: te = "",
27
+ inputPlaceholder: le = "",
28
28
  invalidText: B = "Invalid",
29
29
  label: G = "",
30
- maxSuggestedMatches: te = 1,
31
- name: m,
32
- onBlur: _ = null,
33
- onChange: g = null,
30
+ maxSuggestedMatches: ie = 1,
31
+ name: f,
32
+ onBlur: g = null,
33
+ onChange: w = null,
34
34
  onFocus: N = null,
35
- required: T = !1,
35
+ required: F = !1,
36
36
  rules: H = [],
37
37
  selectDefaultValue: re = {
38
38
  label: "",
@@ -45,16 +45,16 @@ const Be = ({
45
45
  validator: U = null,
46
46
  withoutBorder: ae = !1
47
47
  }) => {
48
- const { input: a, meta: r } = Ee(m), [F, D] = c(le), [n, ne] = c(re), [ce, L] = c({
48
+ const { input: a, meta: r } = Ee(f), [$, D] = d(te), [n, ne] = d(re), [ce, y] = d({
49
49
  left: "0px"
50
- }), [p, f] = c(!1), [$, w] = c(!1), [x, X] = c(S), [v, y] = c(!1), [I, de] = c(!1), [V, me] = c(H), [A, E] = c(!1), b = R(), P = R(), d = R(), O = R();
51
- We(b, () => E(!1));
52
- const fe = h("form-field__label", W && "form-field__label-disabled"), ue = h(
50
+ }), [p, m] = d(!1), [L, b] = d(!1), [x, X] = d(S), [v, I] = d(!1), [V, de] = d(!1), [E, fe] = d(H), [A, O] = d(!1), h = R(), P = R(), c = R(), T = R();
51
+ We(h, () => O(!1));
52
+ const me = _("form-field__label", W && "form-field__label-disabled"), ue = _(
53
53
  "form-field-combobox__input",
54
54
  n.id.length === 0 && "form-field-combobox__input_hidden"
55
55
  );
56
56
  C(() => {
57
- me(
57
+ fe(
58
58
  (e) => e.map((o) => ({
59
59
  ...o,
60
60
  isValid: !r.error || !Array.isArray(r.error) ? !0 : !r.error.some((s) => s.name === o.name)
@@ -69,86 +69,90 @@ const Be = ({
69
69
  }, [r.invalid, r.modified, r.submitFailed, r.touched, r.validating]);
70
70
  const j = K(
71
71
  (e) => {
72
- b.current && !b.current.contains(e.target) && O.current && !O.current.contains(e.target) && (y(!1), f(!1), w(!1), a.onBlur(new Event("blur")), _ && _(a.value));
72
+ h.current && !h.current.contains(e.target) && T.current && !T.current.contains(e.target) && (I(!1), m(!1), b(!1), a.onBlur(new Event("blur")), g && g(a.value));
73
73
  },
74
- [a, _]
74
+ [a, g]
75
75
  ), Y = (e) => {
76
- b.current && b.current.contains(e.target) || !e.target.closest(".pop-up-dialog") && !e.target.classList.contains("form-field-combobox") && (E(!1), f(!1), w(!1), d.current.blur());
76
+ h.current && h.current.contains(e.target) || !e.target.closest(".pop-up-dialog") && !e.target.classList.contains("form-field-combobox") && (O(!1), m(!1), b(!1), c.current.blur());
77
77
  };
78
78
  C(() => (window.addEventListener("click", j), () => {
79
79
  window.removeEventListener("click", j);
80
- }), [j]), C(() => ((A || p || $) && window.addEventListener("scroll", Y, !0), () => {
80
+ }), [j]), C(() => ((A || p || L) && window.addEventListener("scroll", Y, !0), () => {
81
81
  window.removeEventListener("scroll", Y, !0);
82
- }), [p, $, A]);
83
- const pe = () => V.map(({ isValid: e = !1, label: o, name: s }) => /* @__PURE__ */ l(Re, { valid: e, validationMessage: o }, s)), be = (e) => {
82
+ }), [p, L, A]);
83
+ const pe = () => E.map(({ isValid: e = !1, label: o, name: s }) => /* @__PURE__ */ t(ke, { valid: e, validationMessage: o }, s)), be = (e) => {
84
84
  const o = e.target;
85
- L({
85
+ y({
86
86
  left: `${o.selectionStart < 30 ? o.selectionStart : 30}ch`
87
- }), v && y(!1), D(o.value), a.onChange(`${n.id}${o.value}`), g && g(n.id, o.value), x.length > 0 && w(!0);
87
+ }), v && I(!1), D(o.value), a.onChange(`${n.id}${o.value}`), w && w(n.id, o.value), x.length > 0 && b(!0);
88
88
  }, he = (e) => {
89
- e.id !== n.id ? (ne(e), a.onChange(e.id), D(""), g && g(e.id), f(!1), d.current.disabled = !1, d.current.focus()) : (f(!1), d.current.disabled = !1, d.current.focus());
89
+ e.id !== n.id ? (ne(e), a.onChange(e.id), D(""), w && w(e.id), m(!1), c.current.disabled = !1, c.current.focus()) : (m(!1), c.current.disabled = !1, c.current.focus());
90
90
  }, _e = (e) => {
91
- const o = F.split("/"), s = o.length - 1;
92
- let i = e.customDelimiter ? o[s].replace(new RegExp(`${e.customDelimiter}.*`), "") + e.id : e.id;
93
- o.length <= te - 1 && (i += "/"), o[s] = i, v && y(!1), o.join("/") !== F && (D(o.join("/")), a.onChange(`${n.id}${o.join("/")}`), g && g(n.id, o.join("/"))), w(!1), d.current.focus(), L({
94
- left: `${d.current.selectionStart < 30 ? d.current.selectionStart : 30}ch`
91
+ const o = $.split("/"), s = o.length - 1;
92
+ let l = e.customDelimiter ? o[s].replace(new RegExp(`${e.customDelimiter}.*`), "") + e.id : e.id;
93
+ o.length <= ie - 1 && (l += "/"), o[s] = l, v && I(!1), o.join("/") !== $ && (D(o.join("/")), a.onChange(`${n.id}${o.join("/")}`), w && w(n.id, o.join("/"))), b(!1), c.current.focus(), y({
94
+ left: `${c.current.selectionStart < 30 ? c.current.selectionStart : 30}ch`
95
+ });
96
+ }, ge = (e) => {
97
+ N && N(), a.onFocus(new Event("focus")), p && m(!1), c.current.selectionStart ? b(!0) : setTimeout(() => {
98
+ y({
99
+ left: `${e.target.selectionStart < 30 ? e.target.selectionStart : 30}ch`
100
+ }), b(!0);
95
101
  });
96
- }, ge = () => {
97
- N && N(), a.onFocus(new Event("focus")), p && f(!1), w(!0);
98
102
  }, we = (e) => {
99
103
  e.persist(), X(
100
104
  () => S.filter((o) => o.id.startsWith(e.target.value))
101
105
  );
102
106
  }, z = K(() => {
103
- p ? (f(!1), a.onBlur(new Event("blur")), _ && _(a.value)) : (w(!1), E(!1), L({
107
+ p ? (m(!1), a.onBlur(new Event("blur")), g && g(a.value)) : (b(!1), O(!1), y({
104
108
  left: "0px"
105
- }), f(!0), a.onFocus(new Event("focus")), N && N(a.value));
106
- }, [a, _, N, p]), xe = (e = "", o) => {
109
+ }), m(!0), a.onFocus(new Event("focus")), N && N(a.value));
110
+ }, [a, g, N, p]), xe = (e = "", o) => {
107
111
  const s = e.startsWith(n.id) ? e.substring(n.id.length) : e ?? "";
108
- let i = null;
109
- if (!q(V)) {
110
- const [M, Ie] = De(H, s), Ve = M.filter((k) => !k.isValid);
111
- Ie || (i = Ve.map((k) => ({ name: k.name, label: k.label })));
112
+ let l = null;
113
+ if (!q(E)) {
114
+ const [M, Ie] = $e(H, s), Ve = M.filter((k) => !k.isValid);
115
+ Ie || (l = Ve.map((k) => ({ name: k.name, label: k.label })));
112
116
  }
113
- return q(i) && (s.startsWith(" ") ? i = { name: "empty", label: B } : T && s.trim().length === 0 && (i = { name: "required", label: "This field is required" })), !i && U && (i = U(e, o)), i;
117
+ return q(l) && (s.startsWith(" ") ? l = { name: "empty", label: B } : F && s.trim().length === 0 && (l = { name: "required", label: "This field is required" })), !l && U && (l = U(e, o)), l;
114
118
  }, ve = () => {
115
- E((e) => !e), f(!1);
116
- }, Ne = h(
119
+ O((e) => !e), m(!1);
120
+ }, Ne = _(
117
121
  Z,
118
122
  "form-field-combobox",
119
123
  "form-field",
120
- I && "form-field-combobox_invalid"
121
- ), Se = h(
124
+ V && "form-field-combobox_invalid"
125
+ ), Se = _(
122
126
  p && "form-field-combobox__icon_open",
123
127
  "form-field-combobox__icon"
124
- ), Ce = h(n.className), ye = h(
128
+ ), Ce = _(n.className), ye = _(
125
129
  "form-field__wrapper",
126
130
  `form-field__wrapper-${ee}`,
127
131
  W && "form-field__wrapper-disabled",
128
- I && "form-field__wrapper-invalid",
132
+ V && "form-field__wrapper-invalid",
129
133
  ae && "without-border"
130
134
  );
131
- return /* @__PURE__ */ l(Oe, { name: m, validate: xe, children: ({ input: e, meta: o }) => {
135
+ return /* @__PURE__ */ t(Oe, { name: f, validate: xe, children: ({ input: e, meta: o }) => {
132
136
  var s;
133
137
  return /* @__PURE__ */ u(
134
138
  "div",
135
139
  {
136
140
  className: Ne,
137
- ref: b,
138
- "data-testid": m ? `${m}-form-combobox` : "form-combobox",
141
+ ref: h,
142
+ "data-testid": f ? `${f}-form-combobox` : "form-combobox",
139
143
  children: [
140
- G && /* @__PURE__ */ l("div", { className: fe, children: /* @__PURE__ */ u("label", { "data-testid": "label", htmlFor: e.name, children: [
144
+ G && /* @__PURE__ */ t("div", { className: me, children: /* @__PURE__ */ u("label", { "data-testid": "label", htmlFor: e.name, children: [
141
145
  G,
142
- (T || V.find((i) => i.name === "required")) && /* @__PURE__ */ l("span", { className: "form-field__label-mandatory", children: " *" })
146
+ (F || E.find((l) => l.name === "required")) && /* @__PURE__ */ t("span", { className: "form-field__label-mandatory", children: " *" })
143
147
  ] }) }),
144
148
  /* @__PURE__ */ u("div", { className: ye, children: [
145
- /* @__PURE__ */ l("div", { className: "form-field__icons", children: /* @__PURE__ */ l(Pe, { className: Se, onClick: z }) }),
149
+ /* @__PURE__ */ t("div", { className: "form-field__icons", children: /* @__PURE__ */ t(Pe, { className: Se, onClick: z }) }),
146
150
  /* @__PURE__ */ u("div", { className: "form-field-combobox__select form-field__control", ref: P, children: [
147
151
  /* @__PURE__ */ u("div", { className: "form-field-combobox__select-header", onClick: z, children: [
148
- /* @__PURE__ */ l("span", { className: Ce, children: n.id }),
149
- n.id.length === 0 && J && /* @__PURE__ */ l("div", { className: "form-field-combobox__placeholder", children: /* @__PURE__ */ l("label", { children: J }) })
152
+ /* @__PURE__ */ t("span", { className: Ce, children: n.id }),
153
+ n.id.length === 0 && J && /* @__PURE__ */ t("div", { className: "form-field-combobox__placeholder", children: /* @__PURE__ */ t("label", { children: J }) })
150
154
  ] }),
151
- p && /* @__PURE__ */ l(
155
+ p && /* @__PURE__ */ t(
152
156
  Q,
153
157
  {
154
158
  headerIsHidden: !0,
@@ -157,42 +161,43 @@ const Be = ({
157
161
  position: "bottom-right"
158
162
  },
159
163
  className: "form-field-combobox__dropdown form-field-combobox__dropdown-select",
160
- children: /* @__PURE__ */ l("ul", { className: "form-field-combobox__dropdown-list", ref: O, children: se.map((i) => {
161
- if (!i.hidden) {
162
- const M = h(
164
+ children: /* @__PURE__ */ t("ul", { className: "form-field-combobox__dropdown-list", ref: T, children: se.map((l) => {
165
+ if (!l.hidden) {
166
+ const M = _(
163
167
  "form-field-combobox__dropdown-list-option",
164
- i.className
168
+ l.className
165
169
  );
166
- return /* @__PURE__ */ l(
170
+ return /* @__PURE__ */ t(
167
171
  "li",
168
172
  {
169
173
  className: M,
170
- onClick: () => he(i),
171
- children: i.label
174
+ onClick: () => he(l),
175
+ children: l.label
172
176
  },
173
- i.id
177
+ l.id
174
178
  );
175
179
  }
176
180
  }) })
177
181
  }
178
182
  )
179
183
  ] }),
180
- /* @__PURE__ */ l(
184
+ /* @__PURE__ */ t(
181
185
  "input",
182
186
  {
187
+ autoComplete: "off",
183
188
  className: ue,
184
- "data-testid": m ? `${m}-form-combobox-input` : "form-combobox-input",
189
+ "data-testid": f ? `${f}-form-combobox-input` : "form-combobox-input",
185
190
  id: e.name,
186
191
  onChange: be,
187
192
  onFocus: ge,
188
- placeholder: ie,
189
- ref: d,
190
- required: T,
193
+ placeholder: le,
194
+ ref: c,
195
+ required: F,
191
196
  type: "text",
192
- value: F
197
+ value: $
193
198
  }
194
199
  ),
195
- $ && (x.length > 0 || v) && /* @__PURE__ */ l(
200
+ L && (x.length > 0 || v) && /* @__PURE__ */ t(
196
201
  Q,
197
202
  {
198
203
  headerIsHidden: !0,
@@ -204,45 +209,46 @@ const Be = ({
204
209
  style: {
205
210
  ...ce
206
211
  },
207
- children: /* @__PURE__ */ u("div", { ref: O, children: [
212
+ children: /* @__PURE__ */ u("div", { ref: T, children: [
208
213
  !oe && /* @__PURE__ */ u("div", { className: "form-field-combobox__search-wrapper", children: [
209
- /* @__PURE__ */ l(
214
+ /* @__PURE__ */ t(
210
215
  "input",
211
216
  {
212
- "data-testid": m ? `${m}-form-combobox-search` : "form-combobox-search",
217
+ autoComplete: "off",
218
+ "data-testid": f ? `${f}-form-combobox-search` : "form-combobox-search",
213
219
  className: "form-field-combobox__search form-field__control",
214
220
  onChange: we,
215
- onFocus: () => y(!0),
221
+ onFocus: () => I(!0),
216
222
  placeholder: "Type to search",
217
223
  type: "text"
218
224
  }
219
225
  ),
220
- /* @__PURE__ */ l(je, {})
226
+ /* @__PURE__ */ t(je, {})
221
227
  ] }),
222
- /* @__PURE__ */ l("ul", { className: "form-field-combobox__dropdown-list", children: v && x.length === 0 ? /* @__PURE__ */ l("li", { className: "form-field-combobox__dropdown-list-option", children: "No data" }, "no data") : x.map((i) => /* @__PURE__ */ l(
228
+ /* @__PURE__ */ t("ul", { className: "form-field-combobox__dropdown-list", children: v && x.length === 0 ? /* @__PURE__ */ t("li", { className: "form-field-combobox__dropdown-list-option", children: "No data" }, "no data") : x.map((l) => /* @__PURE__ */ t(
223
229
  "li",
224
230
  {
225
231
  className: "form-field-combobox__dropdown-list-option",
226
- onClick: () => _e(i),
227
- children: i.label
232
+ onClick: () => _e(l),
233
+ children: l.label
228
234
  },
229
- i.id
235
+ l.id
230
236
  )) })
231
237
  ] })
232
238
  }
233
239
  ),
234
240
  /* @__PURE__ */ u("div", { className: "form-field__icons", children: [
235
- I && !Array.isArray(o.error) && /* @__PURE__ */ l(
241
+ V && !Array.isArray(o.error) && /* @__PURE__ */ t(
236
242
  Fe,
237
243
  {
238
244
  className: "form-field__warning",
239
- template: /* @__PURE__ */ l(Te, { text: ((s = o.error) == null ? void 0 : s.label) ?? B, warning: !0 }),
240
- children: /* @__PURE__ */ l(qe, {})
245
+ template: /* @__PURE__ */ t(Re, { text: ((s = o.error) == null ? void 0 : s.label) ?? B, warning: !0 }),
246
+ children: /* @__PURE__ */ t(qe, {})
241
247
  }
242
248
  ),
243
- I && Array.isArray(o.error) && /* @__PURE__ */ l("button", { className: "form-field__warning", onClick: ve, children: /* @__PURE__ */ l(Me, {}) })
249
+ V && Array.isArray(o.error) && /* @__PURE__ */ t("button", { className: "form-field__warning", onClick: ve, children: /* @__PURE__ */ t(Me, {}) })
244
250
  ] }),
245
- !q(V) && /* @__PURE__ */ l(ke, { show: A, ref: { refInputContainer: b }, children: pe() })
251
+ !q(E) && /* @__PURE__ */ t(Te, { show: A, ref: { refInputContainer: h }, children: pe() })
246
252
  ] })
247
253
  ]
248
254
  }
@@ -250,27 +256,27 @@ const Be = ({
250
256
  } });
251
257
  };
252
258
  Be.propTypes = {
253
- comboboxClassName: t.string,
259
+ comboboxClassName: i.string,
254
260
  density: Ae,
255
- disabled: t.bool,
256
- hideSearchInput: t.bool,
257
- inputDefaultValue: t.string,
258
- inputPlaceholder: t.string,
259
- invalidText: t.string,
260
- label: t.string,
261
- maxSuggestedMatches: t.number,
262
- name: t.string.isRequired,
263
- onBlur: t.func,
264
- onChange: t.func,
265
- onFocus: t.func,
266
- required: t.bool,
267
- rules: t.array,
268
- selectDefaultValue: t.shape({}),
269
- selectOptions: $e.isRequired,
270
- selectPlaceholder: t.string,
271
- suggestionList: Le,
272
- validator: t.func,
273
- withoutBorder: t.bool
261
+ disabled: i.bool,
262
+ hideSearchInput: i.bool,
263
+ inputDefaultValue: i.string,
264
+ inputPlaceholder: i.string,
265
+ invalidText: i.string,
266
+ label: i.string,
267
+ maxSuggestedMatches: i.number,
268
+ name: i.string.isRequired,
269
+ onBlur: i.func,
270
+ onChange: i.func,
271
+ onFocus: i.func,
272
+ required: i.bool,
273
+ rules: i.array,
274
+ selectDefaultValue: i.shape({}),
275
+ selectOptions: Le.isRequired,
276
+ selectPlaceholder: i.string,
277
+ suggestionList: De,
278
+ validator: i.func,
279
+ withoutBorder: i.bool
274
280
  };
275
281
  export {
276
282
  Be as default
@@ -1 +1 @@
1
- {"version":3,"file":"FormCombobox.mjs","sources":["../../../src/lib/components/FormCombobox/FormCombobox.jsx"],"sourcesContent":["/*\nCopyright 2022 Iguazio Systems Ltd.\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { Field, useField } from 'react-final-form'\nimport { isEmpty } from 'lodash'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\n\nimport OptionsMenu from '../../elements/OptionsMenu/OptionsMenu'\nimport ValidationTemplate from '../../elements/ValidationTemplate/ValidationTemplate'\nimport PopUpDialog from '../PopUpDialog/PopUpDialog'\nimport TextTooltipTemplate from '../TooltipTemplate/TextTooltipTemplate'\nimport Tooltip from '../Tooltip/Tooltip'\n\nimport { checkPatternsValidity } from '../../utils/validation.util'\nimport { useDetectOutsideClick } from '../../hooks'\nimport { COMBOBOX_SELECT_OPTIONS, COMBOBOX_SUGGESTION_LIST, DENSITY } from '../../types'\n\nimport Arrow from '../../images/arrow.svg?react'\nimport SearchIcon from '../../images/search.svg?react'\nimport WarningIcon from '../../images/warning.svg?react'\nimport ExclamationMarkIcon from '../../images/exclamation-mark.svg?react'\n\nimport './formCombobox.scss'\n\nconst FormCombobox = ({\n comboboxClassName = '',\n density = 'normal',\n disabled = false,\n hideSearchInput = false,\n inputDefaultValue = '',\n inputPlaceholder = '',\n invalidText = 'Invalid',\n label = '',\n maxSuggestedMatches = 1,\n name,\n onBlur = null,\n onChange = null,\n onFocus = null,\n required = false,\n rules = [],\n selectDefaultValue = {\n label: '',\n id: '',\n className: ''\n },\n selectOptions,\n selectPlaceholder = '',\n suggestionList = [],\n validator = null,\n withoutBorder = false\n}) => {\n const { input, meta } = useField(name)\n const [inputValue, setInputValue] = useState(inputDefaultValue)\n const [selectValue, setSelectValue] = useState(selectDefaultValue)\n const [dropdownStyle, setDropdownStyle] = useState({\n left: '0px'\n })\n const [showSelectDropdown, setShowSelectDropdown] = useState(false)\n const [showSuggestionList, setShowSuggestionList] = useState(false)\n const [dropdownList, setDropdownList] = useState(suggestionList)\n const [searchIsFocused, setSearchIsFocused] = useState(false)\n const [isInvalid, setIsInvalid] = useState(false)\n const [validationRules, setValidationRules] = useState(rules)\n const [showValidationRules, setShowValidationRules] = useState(false)\n const comboboxRef = useRef()\n const selectRef = useRef()\n const inputRef = useRef()\n const suggestionListRef = useRef()\n useDetectOutsideClick(comboboxRef, () => setShowValidationRules(false))\n\n const labelClassNames = classnames('form-field__label', disabled && 'form-field__label-disabled')\n const inputClassNames = classnames(\n 'form-field-combobox__input',\n selectValue.id.length === 0 && 'form-field-combobox__input_hidden'\n )\n\n useEffect(() => {\n setValidationRules(prevState =>\n prevState.map(rule => ({\n ...rule,\n isValid:\n !meta.error || !Array.isArray(meta.error)\n ? true\n : !meta.error.some(err => err.name === rule.name)\n }))\n )\n }, [meta.error])\n\n useEffect(() => {\n if (!searchIsFocused) {\n if (JSON.stringify(dropdownList) !== JSON.stringify(suggestionList)) {\n setDropdownList(suggestionList)\n }\n }\n }, [dropdownList, suggestionList, searchIsFocused])\n\n useEffect(() => {\n setIsInvalid(\n meta.invalid && (meta.validating || meta.modified || (meta.submitFailed && meta.touched))\n )\n }, [meta.invalid, meta.modified, meta.submitFailed, meta.touched, meta.validating])\n\n const handleOutsideClick = useCallback(\n event => {\n if (\n comboboxRef.current &&\n !comboboxRef.current.contains(event.target) &&\n suggestionListRef.current &&\n !suggestionListRef.current.contains(event.target)\n ) {\n setSearchIsFocused(false)\n setShowSelectDropdown(false)\n setShowSuggestionList(false)\n input.onBlur(new Event('blur'))\n onBlur && onBlur(input.value)\n }\n },\n [input, onBlur]\n )\n\n const handleScroll = event => {\n if (comboboxRef.current && comboboxRef.current.contains(event.target)) return\n\n if (\n !event.target.closest('.pop-up-dialog') &&\n !event.target.classList.contains('form-field-combobox')\n ) {\n setShowValidationRules(false)\n setShowSelectDropdown(false)\n setShowSuggestionList(false)\n inputRef.current.blur()\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleOutsideClick)\n\n return () => {\n window.removeEventListener('click', handleOutsideClick)\n }\n }, [handleOutsideClick])\n\n useEffect(() => {\n if (showValidationRules || showSelectDropdown || showSuggestionList) {\n window.addEventListener('scroll', handleScroll, true)\n }\n return () => {\n window.removeEventListener('scroll', handleScroll, true)\n }\n }, [showSelectDropdown, showSuggestionList, showValidationRules])\n\n const getValidationRules = () => {\n return validationRules.map(({ isValid = false, label, name }) => {\n return <ValidationTemplate valid={isValid} validationMessage={label} key={name} />\n })\n }\n\n const handleInputChange = event => {\n const target = event.target\n\n setDropdownStyle({\n left: `${target.selectionStart < 30 ? target.selectionStart : 30}ch`\n })\n\n if (searchIsFocused) {\n setSearchIsFocused(false)\n }\n\n setInputValue(target.value)\n input.onChange(`${selectValue.id}${target.value}`)\n onChange && onChange(selectValue.id, target.value)\n\n if (dropdownList.length > 0) {\n setShowSuggestionList(true)\n }\n }\n\n const handleSelectOptionClick = selectedOption => {\n if (selectedOption.id !== selectValue.id) {\n setSelectValue(selectedOption)\n input.onChange(selectedOption.id)\n setInputValue('')\n onChange && onChange(selectedOption.id)\n setShowSelectDropdown(false)\n inputRef.current.disabled = false\n inputRef.current.focus()\n } else {\n setShowSelectDropdown(false)\n inputRef.current.disabled = false\n inputRef.current.focus()\n }\n }\n\n const handleSuggestionListOptionClick = option => {\n const inputValueItems = inputValue.split('/')\n const valueIndex = inputValueItems.length - 1\n let formattedValue = option.customDelimiter\n ? inputValueItems[valueIndex].replace(new RegExp(`${option.customDelimiter}.*`), '') +\n option.id\n : option.id\n\n if (inputValueItems.length <= maxSuggestedMatches - 1) formattedValue += '/'\n\n inputValueItems[valueIndex] = formattedValue\n\n if (searchIsFocused) {\n setSearchIsFocused(false)\n }\n\n if (inputValueItems.join('/') !== inputValue) {\n setInputValue(inputValueItems.join('/'))\n input.onChange(`${selectValue.id}${inputValueItems.join('/')}`)\n onChange && onChange(selectValue.id, inputValueItems.join('/'))\n }\n\n setShowSuggestionList(false)\n inputRef.current.focus()\n setDropdownStyle({\n left: `${inputRef.current.selectionStart < 30 ? inputRef.current.selectionStart : 30}ch`\n })\n }\n\n const inputOnFocus = () => {\n onFocus && onFocus()\n input.onFocus(new Event('focus'))\n\n if (showSelectDropdown) {\n setShowSelectDropdown(false)\n }\n\n setShowSuggestionList(true)\n }\n\n const suggestionListSearchChange = event => {\n event.persist()\n setDropdownList(() =>\n suggestionList.filter(option => {\n return option.id.startsWith(event.target.value)\n })\n )\n }\n\n const toggleSelect = useCallback(() => {\n if (showSelectDropdown) {\n setShowSelectDropdown(false)\n input.onBlur(new Event('blur'))\n onBlur && onBlur(input.value)\n } else {\n setShowSuggestionList(false)\n setShowValidationRules(false)\n setDropdownStyle({\n left: '0px'\n })\n setShowSelectDropdown(true)\n input.onFocus(new Event('focus'))\n onFocus && onFocus(input.value)\n }\n }, [input, onBlur, onFocus, showSelectDropdown])\n\n const validateField = (value = '', allValues) => {\n const valueToValidate = value.startsWith(selectValue.id)\n ? value.substring(selectValue.id.length)\n : (value ?? '')\n let validationError = null\n\n if (!isEmpty(validationRules)) {\n const [newRules, isValidField] = checkPatternsValidity(rules, valueToValidate)\n const invalidRules = newRules.filter(rule => !rule.isValid)\n\n if (!isValidField) {\n validationError = invalidRules.map(rule => ({ name: rule.name, label: rule.label }))\n }\n }\n\n if (isEmpty(validationError)) {\n if (valueToValidate.startsWith(' ')) {\n validationError = { name: 'empty', label: invalidText }\n } else if (required && valueToValidate.trim().length === 0) {\n validationError = { name: 'required', label: 'This field is required' }\n }\n }\n\n if (!validationError && validator) {\n validationError = validator(value, allValues)\n }\n\n return validationError\n }\n\n const warningIconClick = () => {\n setShowValidationRules(state => !state)\n setShowSelectDropdown(false)\n }\n\n const comboboxClassNames = classnames(\n comboboxClassName,\n 'form-field-combobox',\n 'form-field',\n isInvalid && 'form-field-combobox_invalid'\n )\n const iconClassNames = classnames(\n showSelectDropdown && 'form-field-combobox__icon_open',\n 'form-field-combobox__icon'\n )\n const selectValueClassNames = classnames(selectValue.className)\n\n const wrapperClassNames = classnames(\n 'form-field__wrapper',\n `form-field__wrapper-${density}`,\n disabled && 'form-field__wrapper-disabled',\n isInvalid && 'form-field__wrapper-invalid',\n withoutBorder && 'without-border'\n )\n\n return (\n <Field name={name} validate={validateField}>\n {({ input, meta }) => (\n <div\n className={comboboxClassNames}\n ref={comboboxRef}\n data-testid={name ? `${name}-form-combobox` : 'form-combobox'}\n >\n {label && (\n <div className={labelClassNames}>\n <label data-testid=\"label\" htmlFor={input.name}>\n {label}\n {(required || validationRules.find(rule => rule.name === 'required')) && (\n <span className=\"form-field__label-mandatory\"> *</span>\n )}\n </label>\n </div>\n )}\n <div className={wrapperClassNames}>\n <div className=\"form-field__icons\">\n <Arrow className={iconClassNames} onClick={toggleSelect} />\n </div>\n <div className=\"form-field-combobox__select form-field__control\" ref={selectRef}>\n <div className=\"form-field-combobox__select-header\" onClick={toggleSelect}>\n <span className={selectValueClassNames}>{selectValue.id}</span>\n {selectValue.id.length === 0 && selectPlaceholder && (\n <div className=\"form-field-combobox__placeholder\">\n <label>{selectPlaceholder}</label>\n </div>\n )}\n </div>\n {showSelectDropdown && (\n <PopUpDialog\n headerIsHidden\n customPosition={{\n element: selectRef,\n position: 'bottom-right'\n }}\n className=\"form-field-combobox__dropdown form-field-combobox__dropdown-select\"\n >\n <ul className=\"form-field-combobox__dropdown-list\" ref={suggestionListRef}>\n {selectOptions.map(option => {\n if (!option.hidden) {\n const selectOptionClassNames = classnames(\n 'form-field-combobox__dropdown-list-option',\n option.className\n )\n\n return (\n <li\n className={selectOptionClassNames}\n key={option.id}\n onClick={() => handleSelectOptionClick(option)}\n >\n {option.label}\n </li>\n )\n }\n })}\n </ul>\n </PopUpDialog>\n )}\n </div>\n <input\n className={inputClassNames}\n data-testid={name ? `${name}-form-combobox-input` : 'form-combobox-input'}\n id={input.name}\n onChange={handleInputChange}\n onFocus={inputOnFocus}\n placeholder={inputPlaceholder}\n ref={inputRef}\n required={required}\n type=\"text\"\n value={inputValue}\n />\n {showSuggestionList && (dropdownList.length > 0 || searchIsFocused) && (\n <PopUpDialog\n headerIsHidden\n customPosition={{\n element: selectRef,\n position: 'bottom-right'\n }}\n className=\"form-field-combobox__dropdown form-field-combobox__dropdown-suggestions\"\n style={{\n ...dropdownStyle\n }}\n >\n <div ref={suggestionListRef}>\n {!hideSearchInput && (\n <div className=\"form-field-combobox__search-wrapper\">\n <input\n data-testid={name ? `${name}-form-combobox-search` : 'form-combobox-search'}\n className=\"form-field-combobox__search form-field__control\"\n onChange={suggestionListSearchChange}\n onFocus={() => setSearchIsFocused(true)}\n placeholder=\"Type to search\"\n type=\"text\"\n />\n <SearchIcon />\n </div>\n )}\n <ul className=\"form-field-combobox__dropdown-list\">\n {searchIsFocused && dropdownList.length === 0 ? (\n <li className=\"form-field-combobox__dropdown-list-option\" key=\"no data\">\n No data\n </li>\n ) : (\n dropdownList.map(value => (\n <li\n className=\"form-field-combobox__dropdown-list-option\"\n key={value.id}\n onClick={() => handleSuggestionListOptionClick(value)}\n >\n {value.label}\n </li>\n ))\n )}\n </ul>\n </div>\n </PopUpDialog>\n )}\n <div className=\"form-field__icons\">\n {isInvalid && !Array.isArray(meta.error) && (\n <Tooltip\n className=\"form-field__warning\"\n template={<TextTooltipTemplate text={meta.error?.label ?? invalidText} warning />}\n >\n <ExclamationMarkIcon />\n </Tooltip>\n )}\n {isInvalid && Array.isArray(meta.error) && (\n <button className=\"form-field__warning\" onClick={warningIconClick}>\n <WarningIcon />\n </button>\n )}\n </div>\n {!isEmpty(validationRules) && (\n <OptionsMenu show={showValidationRules} ref={{ refInputContainer: comboboxRef }}>\n {getValidationRules()}\n </OptionsMenu>\n )}\n </div>\n </div>\n )}\n </Field>\n )\n}\n\nFormCombobox.propTypes = {\n comboboxClassName: PropTypes.string,\n density: DENSITY,\n disabled: PropTypes.bool,\n hideSearchInput: PropTypes.bool,\n inputDefaultValue: PropTypes.string,\n inputPlaceholder: PropTypes.string,\n invalidText: PropTypes.string,\n label: PropTypes.string,\n maxSuggestedMatches: PropTypes.number,\n name: PropTypes.string.isRequired,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n required: PropTypes.bool,\n rules: PropTypes.array,\n selectDefaultValue: PropTypes.shape({}),\n selectOptions: COMBOBOX_SELECT_OPTIONS.isRequired,\n selectPlaceholder: PropTypes.string,\n suggestionList: COMBOBOX_SUGGESTION_LIST,\n validator: PropTypes.func,\n withoutBorder: PropTypes.bool\n}\n\nexport default FormCombobox\n"],"names":["FormCombobox","comboboxClassName","density","disabled","hideSearchInput","inputDefaultValue","inputPlaceholder","invalidText","label","maxSuggestedMatches","name","onBlur","onChange","onFocus","required","rules","selectDefaultValue","selectOptions","selectPlaceholder","suggestionList","validator","withoutBorder","input","meta","useField","inputValue","setInputValue","useState","selectValue","setSelectValue","dropdownStyle","setDropdownStyle","showSelectDropdown","setShowSelectDropdown","showSuggestionList","setShowSuggestionList","dropdownList","setDropdownList","searchIsFocused","setSearchIsFocused","isInvalid","setIsInvalid","validationRules","setValidationRules","showValidationRules","setShowValidationRules","comboboxRef","useRef","selectRef","inputRef","suggestionListRef","useDetectOutsideClick","labelClassNames","classnames","inputClassNames","useEffect","prevState","rule","err","handleOutsideClick","useCallback","event","handleScroll","getValidationRules","isValid","ValidationTemplate","handleInputChange","target","handleSelectOptionClick","selectedOption","handleSuggestionListOptionClick","option","inputValueItems","valueIndex","formattedValue","inputOnFocus","suggestionListSearchChange","toggleSelect","validateField","value","allValues","valueToValidate","validationError","isEmpty","newRules","isValidField","checkPatternsValidity","invalidRules","warningIconClick","state","comboboxClassNames","iconClassNames","selectValueClassNames","wrapperClassNames","jsx","Field","jsxs","Arrow","PopUpDialog","selectOptionClassNames","SearchIcon","Tooltip","TextTooltipTemplate","ExclamationMarkIcon","WarningIcon","OptionsMenu","PropTypes","DENSITY","COMBOBOX_SELECT_OPTIONS","COMBOBOX_SUGGESTION_LIST"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuCA,MAAMA,KAAe,CAAC;AAAA,EACpB,mBAAAC,IAAoB;AAAA,EACpB,SAAAC,KAAU;AAAA,EACV,UAAAC,IAAW;AAAA,EACX,iBAAAC,KAAkB;AAAA,EAClB,mBAAAC,KAAoB;AAAA,EACpB,kBAAAC,KAAmB;AAAA,EACnB,aAAAC,IAAc;AAAA,EACd,OAAAC,IAAQ;AAAA,EACR,qBAAAC,KAAsB;AAAA,EACtB,MAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,UAAAC,IAAW;AAAA,EACX,SAAAC,IAAU;AAAA,EACV,UAAAC,IAAW;AAAA,EACX,OAAAC,IAAQ,CAAC;AAAA,EACT,oBAAAC,KAAqB;AAAA,IACnB,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,WAAW;AAAA,EACb;AAAA,EACA,eAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,gBAAAC,IAAiB,CAAC;AAAA,EAClB,WAAAC,IAAY;AAAA,EACZ,eAAAC,KAAgB;AAClB,MAAM;AACJ,QAAM,EAAE,OAAAC,GAAO,MAAAC,MAASC,GAASd,CAAI,GAC/B,CAACe,GAAYC,CAAa,IAAIC,EAAStB,EAAiB,GACxD,CAACuB,GAAaC,EAAc,IAAIF,EAASX,EAAkB,GAC3D,CAACc,IAAeC,CAAgB,IAAIJ,EAAS;AAAA,IACjD,MAAM;AAAA,EAAA,CACP,GACK,CAACK,GAAoBC,CAAqB,IAAIN,EAAS,EAAK,GAC5D,CAACO,GAAoBC,CAAqB,IAAIR,EAAS,EAAK,GAC5D,CAACS,GAAcC,CAAe,IAAIV,EAASR,CAAc,GACzD,CAACmB,GAAiBC,CAAkB,IAAIZ,EAAS,EAAK,GACtD,CAACa,GAAWC,EAAY,IAAId,EAAS,EAAK,GAC1C,CAACe,GAAiBC,EAAkB,IAAIhB,EAASZ,CAAK,GACtD,CAAC6B,GAAqBC,CAAsB,IAAIlB,EAAS,EAAK,GAC9DmB,IAAcC,EAAO,GACrBC,IAAYD,EAAO,GACnBE,IAAWF,EAAO,GAClBG,IAAoBH,EAAO;AACjC,EAAAI,GAAsBL,GAAa,MAAMD,EAAuB,EAAK,CAAC;AAEtE,QAAMO,KAAkBC,EAAW,qBAAqBlD,KAAY,4BAA4B,GAC1FmD,KAAkBD;AAAA,IACtB;AAAA,IACAzB,EAAY,GAAG,WAAW,KAAK;AAAA,EACjC;AAEA,EAAA2B,EAAU,MAAM;AACd,IAAAZ;AAAA,MAAmB,CAAAa,MACjBA,EAAU,IAAI,CAASC,OAAA;AAAA,QACrB,GAAGA;AAAA,QACH,SACE,CAAClC,EAAK,SAAS,CAAC,MAAM,QAAQA,EAAK,KAAK,IACpC,KACA,CAACA,EAAK,MAAM,KAAK,OAAOmC,EAAI,SAASD,EAAK,IAAI;AAAA,MAAA,EACpD;AAAA,IACJ;AAAA,EAAA,GACC,CAAClC,EAAK,KAAK,CAAC,GAEfgC,EAAU,MAAM;AACd,IAAKjB,KACC,KAAK,UAAUF,CAAY,MAAM,KAAK,UAAUjB,CAAc,KAChEkB,EAAgBlB,CAAc;AAAA,EAGjC,GAAA,CAACiB,GAAcjB,GAAgBmB,CAAe,CAAC,GAElDiB,EAAU,MAAM;AACd,IAAAd;AAAA,MACElB,EAAK,YAAYA,EAAK,cAAcA,EAAK,YAAaA,EAAK,gBAAgBA,EAAK;AAAA,IAClF;AAAA,EACC,GAAA,CAACA,EAAK,SAASA,EAAK,UAAUA,EAAK,cAAcA,EAAK,SAASA,EAAK,UAAU,CAAC;AAElF,QAAMoC,IAAqBC;AAAA,IACzB,CAASC,MAAA;AACP,MACEf,EAAY,WACZ,CAACA,EAAY,QAAQ,SAASe,EAAM,MAAM,KAC1CX,EAAkB,WAClB,CAACA,EAAkB,QAAQ,SAASW,EAAM,MAAM,MAEhDtB,EAAmB,EAAK,GACxBN,EAAsB,EAAK,GAC3BE,EAAsB,EAAK,GAC3Bb,EAAM,OAAO,IAAI,MAAM,MAAM,CAAC,GACpBX,KAAAA,EAAOW,EAAM,KAAK;AAAA,IAEhC;AAAA,IACA,CAACA,GAAOX,CAAM;AAAA,EAChB,GAEMmD,IAAe,CAASD,MAAA;AAC5B,IAAIf,EAAY,WAAWA,EAAY,QAAQ,SAASe,EAAM,MAAM,KAGlE,CAACA,EAAM,OAAO,QAAQ,gBAAgB,KACtC,CAACA,EAAM,OAAO,UAAU,SAAS,qBAAqB,MAEtDhB,EAAuB,EAAK,GAC5BZ,EAAsB,EAAK,GAC3BE,EAAsB,EAAK,GAC3Bc,EAAS,QAAQ,KAAK;AAAA,EAE1B;AAEA,EAAAM,EAAU,OACD,OAAA,iBAAiB,SAASI,CAAkB,GAE5C,MAAM;AACJ,WAAA,oBAAoB,SAASA,CAAkB;AAAA,EACxD,IACC,CAACA,CAAkB,CAAC,GAEvBJ,EAAU,QACJX,KAAuBZ,KAAsBE,MACxC,OAAA,iBAAiB,UAAU4B,GAAc,EAAI,GAE/C,MAAM;AACJ,WAAA,oBAAoB,UAAUA,GAAc,EAAI;AAAA,EACzD,IACC,CAAC9B,GAAoBE,GAAoBU,CAAmB,CAAC;AAEhE,QAAMmB,KAAqB,MAClBrB,EAAgB,IAAI,CAAC,EAAE,SAAAsB,IAAU,IAAO,OAAAxD,GAAO,MAAAE,0BAC5CuD,IAAmB,EAAA,OAAOD,GAAS,mBAAmBxD,KAAYE,CAAM,CACjF,GAGGwD,KAAoB,CAASL,MAAA;AACjC,UAAMM,IAASN,EAAM;AAEJ,IAAA9B,EAAA;AAAA,MACf,MAAM,GAAGoC,EAAO,iBAAiB,KAAKA,EAAO,iBAAiB,EAAE;AAAA,IAAA,CACjE,GAEG7B,KACFC,EAAmB,EAAK,GAG1Bb,EAAcyC,EAAO,KAAK,GAC1B7C,EAAM,SAAS,GAAGM,EAAY,EAAE,GAAGuC,EAAO,KAAK,EAAE,GACjDvD,KAAYA,EAASgB,EAAY,IAAIuC,EAAO,KAAK,GAE7C/B,EAAa,SAAS,KACxBD,EAAsB,EAAI;AAAA,EAE9B,GAEMiC,KAA0B,CAAkBC,MAAA;AAC5C,IAAAA,EAAe,OAAOzC,EAAY,MACpCC,GAAewC,CAAc,GACvB/C,EAAA,SAAS+C,EAAe,EAAE,GAChC3C,EAAc,EAAE,GACJd,KAAAA,EAASyD,EAAe,EAAE,GACtCpC,EAAsB,EAAK,GAC3BgB,EAAS,QAAQ,WAAW,IAC5BA,EAAS,QAAQ,MAAM,MAEvBhB,EAAsB,EAAK,GAC3BgB,EAAS,QAAQ,WAAW,IAC5BA,EAAS,QAAQ,MAAM;AAAA,EAE3B,GAEMqB,KAAkC,CAAUC,MAAA;AAC1C,UAAAC,IAAkB/C,EAAW,MAAM,GAAG,GACtCgD,IAAaD,EAAgB,SAAS;AAC5C,QAAIE,IAAiBH,EAAO,kBACxBC,EAAgBC,CAAU,EAAE,QAAQ,IAAI,OAAO,GAAGF,EAAO,eAAe,IAAI,GAAG,EAAE,IACjFA,EAAO,KACPA,EAAO;AAEX,IAAIC,EAAgB,UAAU/D,KAAsB,MAAqBiE,KAAA,MAEzEF,EAAgBC,CAAU,IAAIC,GAE1BpC,KACFC,EAAmB,EAAK,GAGtBiC,EAAgB,KAAK,GAAG,MAAM/C,MAClBC,EAAA8C,EAAgB,KAAK,GAAG,CAAC,GACjClD,EAAA,SAAS,GAAGM,EAAY,EAAE,GAAG4C,EAAgB,KAAK,GAAG,CAAC,EAAE,GAC9D5D,KAAYA,EAASgB,EAAY,IAAI4C,EAAgB,KAAK,GAAG,CAAC,IAGhErC,EAAsB,EAAK,GAC3Bc,EAAS,QAAQ,MAAM,GACNlB,EAAA;AAAA,MACf,MAAM,GAAGkB,EAAS,QAAQ,iBAAiB,KAAKA,EAAS,QAAQ,iBAAiB,EAAE;AAAA,IAAA,CACrF;AAAA,EACH,GAEM0B,KAAe,MAAM;AACzB,IAAA9D,KAAWA,EAAQ,GACnBS,EAAM,QAAQ,IAAI,MAAM,OAAO,CAAC,GAE5BU,KACFC,EAAsB,EAAK,GAG7BE,EAAsB,EAAI;AAAA,EAC5B,GAEMyC,KAA6B,CAASf,MAAA;AAC1C,IAAAA,EAAM,QAAQ,GACdxB;AAAA,MAAgB,MACdlB,EAAe,OAAO,CAAUoD,MACvBA,EAAO,GAAG,WAAWV,EAAM,OAAO,KAAK,CAC/C;AAAA,IACH;AAAA,EACF,GAEMgB,IAAejB,EAAY,MAAM;AACrC,IAAI5B,KACFC,EAAsB,EAAK,GAC3BX,EAAM,OAAO,IAAI,MAAM,MAAM,CAAC,GACpBX,KAAAA,EAAOW,EAAM,KAAK,MAE5Ba,EAAsB,EAAK,GAC3BU,EAAuB,EAAK,GACXd,EAAA;AAAA,MACf,MAAM;AAAA,IAAA,CACP,GACDE,EAAsB,EAAI,GAC1BX,EAAM,QAAQ,IAAI,MAAM,OAAO,CAAC,GACrBT,KAAAA,EAAQS,EAAM,KAAK;AAAA,KAE/B,CAACA,GAAOX,GAAQE,GAASmB,CAAkB,CAAC,GAEzC8C,KAAgB,CAACC,IAAQ,IAAIC,MAAc;AAC/C,UAAMC,IAAkBF,EAAM,WAAWnD,EAAY,EAAE,IACnDmD,EAAM,UAAUnD,EAAY,GAAG,MAAM,IACpCmD,KAAS;AACd,QAAIG,IAAkB;AAElB,QAAA,CAACC,EAAQzC,CAAe,GAAG;AAC7B,YAAM,CAAC0C,GAAUC,EAAY,IAAIC,GAAsBvE,GAAOkE,CAAe,GACvEM,KAAeH,EAAS,OAAO,CAAQ3B,MAAA,CAACA,EAAK,OAAO;AAE1D,MAAK4B,OACeH,IAAAK,GAAa,IAAI,CAAA9B,OAAS,EAAE,MAAMA,EAAK,MAAM,OAAOA,EAAK,MAAQ,EAAA;AAAA,IACrF;AAGE,WAAA0B,EAAQD,CAAe,MACrBD,EAAgB,WAAW,GAAG,IAChCC,IAAkB,EAAE,MAAM,SAAS,OAAO3E,EAAY,IAC7CO,KAAYmE,EAAgB,KAAK,EAAE,WAAW,MACvDC,IAAkB,EAAE,MAAM,YAAY,OAAO,yBAAyB,KAItE,CAACA,KAAmB9D,MACJ8D,IAAA9D,EAAU2D,GAAOC,CAAS,IAGvCE;AAAA,EACT,GAEMM,KAAmB,MAAM;AACN,IAAA3C,EAAA,CAAA4C,MAAS,CAACA,CAAK,GACtCxD,EAAsB,EAAK;AAAA,EAC7B,GAEMyD,KAAqBrC;AAAA,IACzBpD;AAAA,IACA;AAAA,IACA;AAAA,IACAuC,KAAa;AAAA,EACf,GACMmD,KAAiBtC;AAAA,IACrBrB,KAAsB;AAAA,IACtB;AAAA,EACF,GACM4D,KAAwBvC,EAAWzB,EAAY,SAAS,GAExDiE,KAAoBxC;AAAA,IACxB;AAAA,IACA,uBAAuBnD,EAAO;AAAA,IAC9BC,KAAY;AAAA,IACZqC,KAAa;AAAA,IACbnB,MAAiB;AAAA,EACnB;AAGE,SAAA,gBAAAyE,EAACC,IAAM,EAAA,MAAArF,GAAY,UAAUoE,IAC1B,UAAC,CAAA,EAAE,OAAAxD,GAAO,MAAAC,EACT,MAAA;;AAAA,2BAAAyE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWN;AAAA,QACX,KAAK5C;AAAA,QACL,eAAapC,IAAO,GAAGA,CAAI,mBAAmB;AAAA,QAE7C,UAAA;AAAA,UACCF,KAAA,gBAAAsF,EAAC,OAAI,EAAA,WAAW1C,IACd,UAAA,gBAAA4C,EAAC,WAAM,eAAY,SAAQ,SAAS1E,EAAM,MACvC,UAAA;AAAA,YAAAd;AAAA,aACCM,KAAY4B,EAAgB,KAAK,CAAAe,MAAQA,EAAK,SAAS,UAAU,MAChE,gBAAAqC,EAAA,QAAA,EAAK,WAAU,+BAA8B,UAAE,KAAA,CAAA;AAAA,UAAA,EAAA,CAEpD,EACF,CAAA;AAAA,UAEF,gBAAAE,EAAC,OAAI,EAAA,WAAWH,IACd,UAAA;AAAA,YAAC,gBAAAC,EAAA,OAAA,EAAI,WAAU,qBACb,UAAA,gBAAAA,EAACG,MAAM,WAAWN,IAAgB,SAASd,EAAA,CAAc,EAC3D,CAAA;AAAA,YACC,gBAAAmB,EAAA,OAAA,EAAI,WAAU,mDAAkD,KAAKhD,GACpE,UAAA;AAAA,cAAA,gBAAAgD,EAAC,OAAI,EAAA,WAAU,sCAAqC,SAASnB,GAC3D,UAAA;AAAA,gBAAA,gBAAAiB,EAAC,QAAK,EAAA,WAAWF,IAAwB,UAAAhE,EAAY,IAAG;AAAA,gBACvDA,EAAY,GAAG,WAAW,KAAKV,KAC9B,gBAAA4E,EAAC,OAAI,EAAA,WAAU,oCACb,UAAA,gBAAAA,EAAC,SAAO,EAAA,UAAA5E,EAAA,CAAkB,EAC5B,CAAA;AAAA,cAAA,GAEJ;AAAA,cACCc,KACC,gBAAA8D;AAAA,gBAACI;AAAA,gBAAA;AAAA,kBACC,gBAAc;AAAA,kBACd,gBAAgB;AAAA,oBACd,SAASlD;AAAA,oBACT,UAAU;AAAA,kBACZ;AAAA,kBACA,WAAU;AAAA,kBAEV,UAAA,gBAAA8C,EAAC,QAAG,WAAU,sCAAqC,KAAK5C,GACrD,UAAAjC,GAAc,IAAI,CAAUsD,MAAA;AACvB,wBAAA,CAACA,EAAO,QAAQ;AAClB,4BAAM4B,IAAyB9C;AAAA,wBAC7B;AAAA,wBACAkB,EAAO;AAAA,sBACT;AAGE,6BAAA,gBAAAuB;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAWK;AAAA,0BAEX,SAAS,MAAM/B,GAAwBG,CAAM;AAAA,0BAE5C,UAAOA,EAAA;AAAA,wBAAA;AAAA,wBAHHA,EAAO;AAAA,sBAId;AAAA,oBAAA;AAAA,kBAEJ,CACD,EACH,CAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF,GAEJ;AAAA,YACA,gBAAAuB;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWxC;AAAA,gBACX,eAAa5C,IAAO,GAAGA,CAAI,yBAAyB;AAAA,gBACpD,IAAIY,EAAM;AAAA,gBACV,UAAU4C;AAAA,gBACV,SAASS;AAAA,gBACT,aAAarE;AAAA,gBACb,KAAK2C;AAAA,gBACL,UAAAnC;AAAA,gBACA,MAAK;AAAA,gBACL,OAAOW;AAAA,cAAA;AAAA,YACT;AAAA,YACCS,MAAuBE,EAAa,SAAS,KAAKE,MACjD,gBAAAwD;AAAA,cAACI;AAAA,cAAA;AAAA,gBACC,gBAAc;AAAA,gBACd,gBAAgB;AAAA,kBACd,SAASlD;AAAA,kBACT,UAAU;AAAA,gBACZ;AAAA,gBACA,WAAU;AAAA,gBACV,OAAO;AAAA,kBACL,GAAGlB;AAAA,gBACL;AAAA,gBAEA,UAAA,gBAAAkE,EAAC,OAAI,EAAA,KAAK9C,GACP,UAAA;AAAA,kBAAA,CAAC9C,MACA,gBAAA4F,EAAC,OAAI,EAAA,WAAU,uCACb,UAAA;AAAA,oBAAA,gBAAAF;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,eAAapF,IAAO,GAAGA,CAAI,0BAA0B;AAAA,wBACrD,WAAU;AAAA,wBACV,UAAUkE;AAAA,wBACV,SAAS,MAAMrC,EAAmB,EAAI;AAAA,wBACtC,aAAY;AAAA,wBACZ,MAAK;AAAA,sBAAA;AAAA,oBACP;AAAA,sCACC6D,IAAW,CAAA,CAAA;AAAA,kBAAA,GACd;AAAA,oCAED,MAAG,EAAA,WAAU,sCACX,UAAA9D,KAAmBF,EAAa,WAAW,IACzC,gBAAA0D,EAAA,MAAA,EAAG,WAAU,6CAA0D,UAAA,UAAA,GAAV,SAE9D,IAEA1D,EAAa,IAAI,CACf2C,MAAA,gBAAAe;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBAEV,SAAS,MAAMxB,GAAgCS,CAAK;AAAA,sBAEnD,UAAMA,EAAA;AAAA,oBAAA;AAAA,oBAHFA,EAAM;AAAA,kBAAA,CAKd,EAEL,CAAA;AAAA,gBAAA,EACF,CAAA;AAAA,cAAA;AAAA,YACF;AAAA,YAEF,gBAAAiB,EAAC,OAAI,EAAA,WAAU,qBACZ,UAAA;AAAA,cAAAxD,KAAa,CAAC,MAAM,QAAQjB,EAAK,KAAK,KACrC,gBAAAuE;AAAA,gBAACO;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,4BAAWC,IAAoB,EAAA,QAAM/E,IAAAA,EAAK,UAALA,gBAAAA,EAAY,UAAShB,GAAa,SAAO,GAAC,CAAA;AAAA,kBAE/E,4BAACgG,IAAoB,CAAA,CAAA;AAAA,gBAAA;AAAA,cACvB;AAAA,cAED/D,KAAa,MAAM,QAAQjB,EAAK,KAAK,KACpC,gBAAAuE,EAAC,UAAO,EAAA,WAAU,uBAAsB,SAASN,IAC/C,UAAA,gBAAAM,EAACU,MAAY,EACf,CAAA;AAAA,YAAA,GAEJ;AAAA,YACC,CAACrB,EAAQzC,CAAe,uBACtB+D,IAAY,EAAA,MAAM7D,GAAqB,KAAK,EAAE,mBAAmBE,EAAY,GAC3E,eACH,CAAA;AAAA,UAAA,EAEJ,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,KAGN;AAEJ;AAEA9C,GAAa,YAAY;AAAA,EACvB,mBAAmB0G,EAAU;AAAA,EAC7B,SAASC;AAAA,EACT,UAAUD,EAAU;AAAA,EACpB,iBAAiBA,EAAU;AAAA,EAC3B,mBAAmBA,EAAU;AAAA,EAC7B,kBAAkBA,EAAU;AAAA,EAC5B,aAAaA,EAAU;AAAA,EACvB,OAAOA,EAAU;AAAA,EACjB,qBAAqBA,EAAU;AAAA,EAC/B,MAAMA,EAAU,OAAO;AAAA,EACvB,QAAQA,EAAU;AAAA,EAClB,UAAUA,EAAU;AAAA,EACpB,SAASA,EAAU;AAAA,EACnB,UAAUA,EAAU;AAAA,EACpB,OAAOA,EAAU;AAAA,EACjB,oBAAoBA,EAAU,MAAM,EAAE;AAAA,EACtC,eAAeE,GAAwB;AAAA,EACvC,mBAAmBF,EAAU;AAAA,EAC7B,gBAAgBG;AAAA,EAChB,WAAWH,EAAU;AAAA,EACrB,eAAeA,EAAU;AAC3B;"}
1
+ {"version":3,"file":"FormCombobox.mjs","sources":["../../../src/lib/components/FormCombobox/FormCombobox.jsx"],"sourcesContent":["/*\nCopyright 2022 Iguazio Systems Ltd.\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { Field, useField } from 'react-final-form'\nimport { isEmpty } from 'lodash'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\n\nimport OptionsMenu from '../../elements/OptionsMenu/OptionsMenu'\nimport ValidationTemplate from '../../elements/ValidationTemplate/ValidationTemplate'\nimport PopUpDialog from '../PopUpDialog/PopUpDialog'\nimport TextTooltipTemplate from '../TooltipTemplate/TextTooltipTemplate'\nimport Tooltip from '../Tooltip/Tooltip'\n\nimport { checkPatternsValidity } from '../../utils/validation.util'\nimport { useDetectOutsideClick } from '../../hooks'\nimport { COMBOBOX_SELECT_OPTIONS, COMBOBOX_SUGGESTION_LIST, DENSITY } from '../../types'\n\nimport Arrow from '../../images/arrow.svg?react'\nimport SearchIcon from '../../images/search.svg?react'\nimport WarningIcon from '../../images/warning.svg?react'\nimport ExclamationMarkIcon from '../../images/exclamation-mark.svg?react'\n\nimport './formCombobox.scss'\n\nconst FormCombobox = ({\n comboboxClassName = '',\n density = 'normal',\n disabled = false,\n hideSearchInput = false,\n inputDefaultValue = '',\n inputPlaceholder = '',\n invalidText = 'Invalid',\n label = '',\n maxSuggestedMatches = 1,\n name,\n onBlur = null,\n onChange = null,\n onFocus = null,\n required = false,\n rules = [],\n selectDefaultValue = {\n label: '',\n id: '',\n className: ''\n },\n selectOptions,\n selectPlaceholder = '',\n suggestionList = [],\n validator = null,\n withoutBorder = false\n}) => {\n const { input, meta } = useField(name)\n const [inputValue, setInputValue] = useState(inputDefaultValue)\n const [selectValue, setSelectValue] = useState(selectDefaultValue)\n const [dropdownStyle, setDropdownStyle] = useState({\n left: '0px'\n })\n const [showSelectDropdown, setShowSelectDropdown] = useState(false)\n const [showSuggestionList, setShowSuggestionList] = useState(false)\n const [dropdownList, setDropdownList] = useState(suggestionList)\n const [searchIsFocused, setSearchIsFocused] = useState(false)\n const [isInvalid, setIsInvalid] = useState(false)\n const [validationRules, setValidationRules] = useState(rules)\n const [showValidationRules, setShowValidationRules] = useState(false)\n const comboboxRef = useRef()\n const selectRef = useRef()\n const inputRef = useRef()\n const suggestionListRef = useRef()\n useDetectOutsideClick(comboboxRef, () => setShowValidationRules(false))\n\n const labelClassNames = classnames('form-field__label', disabled && 'form-field__label-disabled')\n const inputClassNames = classnames(\n 'form-field-combobox__input',\n selectValue.id.length === 0 && 'form-field-combobox__input_hidden'\n )\n\n useEffect(() => {\n setValidationRules(prevState =>\n prevState.map(rule => ({\n ...rule,\n isValid:\n !meta.error || !Array.isArray(meta.error)\n ? true\n : !meta.error.some(err => err.name === rule.name)\n }))\n )\n }, [meta.error])\n\n useEffect(() => {\n if (!searchIsFocused) {\n if (JSON.stringify(dropdownList) !== JSON.stringify(suggestionList)) {\n setDropdownList(suggestionList)\n }\n }\n }, [dropdownList, suggestionList, searchIsFocused])\n\n useEffect(() => {\n setIsInvalid(\n meta.invalid && (meta.validating || meta.modified || (meta.submitFailed && meta.touched))\n )\n }, [meta.invalid, meta.modified, meta.submitFailed, meta.touched, meta.validating])\n\n const handleOutsideClick = useCallback(\n event => {\n if (\n comboboxRef.current &&\n !comboboxRef.current.contains(event.target) &&\n suggestionListRef.current &&\n !suggestionListRef.current.contains(event.target)\n ) {\n setSearchIsFocused(false)\n setShowSelectDropdown(false)\n setShowSuggestionList(false)\n input.onBlur(new Event('blur'))\n onBlur && onBlur(input.value)\n }\n },\n [input, onBlur]\n )\n\n const handleScroll = event => {\n if (comboboxRef.current && comboboxRef.current.contains(event.target)) return\n\n if (\n !event.target.closest('.pop-up-dialog') &&\n !event.target.classList.contains('form-field-combobox')\n ) {\n setShowValidationRules(false)\n setShowSelectDropdown(false)\n setShowSuggestionList(false)\n inputRef.current.blur()\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleOutsideClick)\n\n return () => {\n window.removeEventListener('click', handleOutsideClick)\n }\n }, [handleOutsideClick])\n\n useEffect(() => {\n if (showValidationRules || showSelectDropdown || showSuggestionList) {\n window.addEventListener('scroll', handleScroll, true)\n }\n return () => {\n window.removeEventListener('scroll', handleScroll, true)\n }\n }, [showSelectDropdown, showSuggestionList, showValidationRules])\n\n const getValidationRules = () => {\n return validationRules.map(({ isValid = false, label, name }) => {\n return <ValidationTemplate valid={isValid} validationMessage={label} key={name} />\n })\n }\n\n const handleInputChange = event => {\n const target = event.target\n\n setDropdownStyle({\n left: `${target.selectionStart < 30 ? target.selectionStart : 30}ch`\n })\n\n if (searchIsFocused) {\n setSearchIsFocused(false)\n }\n\n setInputValue(target.value)\n input.onChange(`${selectValue.id}${target.value}`)\n onChange && onChange(selectValue.id, target.value)\n\n if (dropdownList.length > 0) {\n setShowSuggestionList(true)\n }\n }\n\n const handleSelectOptionClick = selectedOption => {\n if (selectedOption.id !== selectValue.id) {\n setSelectValue(selectedOption)\n input.onChange(selectedOption.id)\n setInputValue('')\n onChange && onChange(selectedOption.id)\n setShowSelectDropdown(false)\n inputRef.current.disabled = false\n inputRef.current.focus()\n } else {\n setShowSelectDropdown(false)\n inputRef.current.disabled = false\n inputRef.current.focus()\n }\n }\n\n const handleSuggestionListOptionClick = option => {\n const inputValueItems = inputValue.split('/')\n const valueIndex = inputValueItems.length - 1\n let formattedValue = option.customDelimiter\n ? inputValueItems[valueIndex].replace(new RegExp(`${option.customDelimiter}.*`), '') +\n option.id\n : option.id\n\n if (inputValueItems.length <= maxSuggestedMatches - 1) formattedValue += '/'\n\n inputValueItems[valueIndex] = formattedValue\n\n if (searchIsFocused) {\n setSearchIsFocused(false)\n }\n\n if (inputValueItems.join('/') !== inputValue) {\n setInputValue(inputValueItems.join('/'))\n input.onChange(`${selectValue.id}${inputValueItems.join('/')}`)\n onChange && onChange(selectValue.id, inputValueItems.join('/'))\n }\n\n setShowSuggestionList(false)\n inputRef.current.focus()\n setDropdownStyle({\n left: `${inputRef.current.selectionStart < 30 ? inputRef.current.selectionStart : 30}ch`\n })\n }\n\n const inputOnFocus = event => {\n onFocus && onFocus()\n input.onFocus(new Event('focus'))\n\n if (showSelectDropdown) {\n setShowSelectDropdown(false)\n }\n\n // browser need some time to calculate cursor position after onFocus fired\n if (!inputRef.current.selectionStart) {\n setTimeout(() => {\n setDropdownStyle({\n left: `${event.target.selectionStart < 30 ? event.target.selectionStart : 30}ch`\n })\n setShowSuggestionList(true)\n })\n } else {\n setShowSuggestionList(true)\n }\n }\n\n const suggestionListSearchChange = event => {\n event.persist()\n setDropdownList(() =>\n suggestionList.filter(option => {\n return option.id.startsWith(event.target.value)\n })\n )\n }\n\n const toggleSelect = useCallback(() => {\n if (showSelectDropdown) {\n setShowSelectDropdown(false)\n input.onBlur(new Event('blur'))\n onBlur && onBlur(input.value)\n } else {\n setShowSuggestionList(false)\n setShowValidationRules(false)\n setDropdownStyle({\n left: '0px'\n })\n setShowSelectDropdown(true)\n input.onFocus(new Event('focus'))\n onFocus && onFocus(input.value)\n }\n }, [input, onBlur, onFocus, showSelectDropdown])\n\n const validateField = (value = '', allValues) => {\n const valueToValidate = value.startsWith(selectValue.id)\n ? value.substring(selectValue.id.length)\n : (value ?? '')\n let validationError = null\n\n if (!isEmpty(validationRules)) {\n const [newRules, isValidField] = checkPatternsValidity(rules, valueToValidate)\n const invalidRules = newRules.filter(rule => !rule.isValid)\n\n if (!isValidField) {\n validationError = invalidRules.map(rule => ({ name: rule.name, label: rule.label }))\n }\n }\n\n if (isEmpty(validationError)) {\n if (valueToValidate.startsWith(' ')) {\n validationError = { name: 'empty', label: invalidText }\n } else if (required && valueToValidate.trim().length === 0) {\n validationError = { name: 'required', label: 'This field is required' }\n }\n }\n\n if (!validationError && validator) {\n validationError = validator(value, allValues)\n }\n\n return validationError\n }\n\n const warningIconClick = () => {\n setShowValidationRules(state => !state)\n setShowSelectDropdown(false)\n }\n\n const comboboxClassNames = classnames(\n comboboxClassName,\n 'form-field-combobox',\n 'form-field',\n isInvalid && 'form-field-combobox_invalid'\n )\n const iconClassNames = classnames(\n showSelectDropdown && 'form-field-combobox__icon_open',\n 'form-field-combobox__icon'\n )\n const selectValueClassNames = classnames(selectValue.className)\n\n const wrapperClassNames = classnames(\n 'form-field__wrapper',\n `form-field__wrapper-${density}`,\n disabled && 'form-field__wrapper-disabled',\n isInvalid && 'form-field__wrapper-invalid',\n withoutBorder && 'without-border'\n )\n\n return (\n <Field name={name} validate={validateField}>\n {({ input, meta }) => (\n <div\n className={comboboxClassNames}\n ref={comboboxRef}\n data-testid={name ? `${name}-form-combobox` : 'form-combobox'}\n >\n {label && (\n <div className={labelClassNames}>\n <label data-testid=\"label\" htmlFor={input.name}>\n {label}\n {(required || validationRules.find(rule => rule.name === 'required')) && (\n <span className=\"form-field__label-mandatory\"> *</span>\n )}\n </label>\n </div>\n )}\n <div className={wrapperClassNames}>\n <div className=\"form-field__icons\">\n <Arrow className={iconClassNames} onClick={toggleSelect} />\n </div>\n <div className=\"form-field-combobox__select form-field__control\" ref={selectRef}>\n <div className=\"form-field-combobox__select-header\" onClick={toggleSelect}>\n <span className={selectValueClassNames}>{selectValue.id}</span>\n {selectValue.id.length === 0 && selectPlaceholder && (\n <div className=\"form-field-combobox__placeholder\">\n <label>{selectPlaceholder}</label>\n </div>\n )}\n </div>\n {showSelectDropdown && (\n <PopUpDialog\n headerIsHidden\n customPosition={{\n element: selectRef,\n position: 'bottom-right'\n }}\n className=\"form-field-combobox__dropdown form-field-combobox__dropdown-select\"\n >\n <ul className=\"form-field-combobox__dropdown-list\" ref={suggestionListRef}>\n {selectOptions.map(option => {\n if (!option.hidden) {\n const selectOptionClassNames = classnames(\n 'form-field-combobox__dropdown-list-option',\n option.className\n )\n\n return (\n <li\n className={selectOptionClassNames}\n key={option.id}\n onClick={() => handleSelectOptionClick(option)}\n >\n {option.label}\n </li>\n )\n }\n })}\n </ul>\n </PopUpDialog>\n )}\n </div>\n <input\n autoComplete=\"off\"\n className={inputClassNames}\n data-testid={name ? `${name}-form-combobox-input` : 'form-combobox-input'}\n id={input.name}\n onChange={handleInputChange}\n onFocus={inputOnFocus}\n placeholder={inputPlaceholder}\n ref={inputRef}\n required={required}\n type=\"text\"\n value={inputValue}\n />\n {showSuggestionList && (dropdownList.length > 0 || searchIsFocused) && (\n <PopUpDialog\n headerIsHidden\n customPosition={{\n element: selectRef,\n position: 'bottom-right'\n }}\n className=\"form-field-combobox__dropdown form-field-combobox__dropdown-suggestions\"\n style={{\n ...dropdownStyle\n }}\n >\n <div ref={suggestionListRef}>\n {!hideSearchInput && (\n <div className=\"form-field-combobox__search-wrapper\">\n <input\n autoComplete=\"off\"\n data-testid={name ? `${name}-form-combobox-search` : 'form-combobox-search'}\n className=\"form-field-combobox__search form-field__control\"\n onChange={suggestionListSearchChange}\n onFocus={() => setSearchIsFocused(true)}\n placeholder=\"Type to search\"\n type=\"text\"\n />\n <SearchIcon />\n </div>\n )}\n <ul className=\"form-field-combobox__dropdown-list\">\n {searchIsFocused && dropdownList.length === 0 ? (\n <li className=\"form-field-combobox__dropdown-list-option\" key=\"no data\">\n No data\n </li>\n ) : (\n dropdownList.map(value => (\n <li\n className=\"form-field-combobox__dropdown-list-option\"\n key={value.id}\n onClick={() => handleSuggestionListOptionClick(value)}\n >\n {value.label}\n </li>\n ))\n )}\n </ul>\n </div>\n </PopUpDialog>\n )}\n <div className=\"form-field__icons\">\n {isInvalid && !Array.isArray(meta.error) && (\n <Tooltip\n className=\"form-field__warning\"\n template={<TextTooltipTemplate text={meta.error?.label ?? invalidText} warning />}\n >\n <ExclamationMarkIcon />\n </Tooltip>\n )}\n {isInvalid && Array.isArray(meta.error) && (\n <button className=\"form-field__warning\" onClick={warningIconClick}>\n <WarningIcon />\n </button>\n )}\n </div>\n {!isEmpty(validationRules) && (\n <OptionsMenu show={showValidationRules} ref={{ refInputContainer: comboboxRef }}>\n {getValidationRules()}\n </OptionsMenu>\n )}\n </div>\n </div>\n )}\n </Field>\n )\n}\n\nFormCombobox.propTypes = {\n comboboxClassName: PropTypes.string,\n density: DENSITY,\n disabled: PropTypes.bool,\n hideSearchInput: PropTypes.bool,\n inputDefaultValue: PropTypes.string,\n inputPlaceholder: PropTypes.string,\n invalidText: PropTypes.string,\n label: PropTypes.string,\n maxSuggestedMatches: PropTypes.number,\n name: PropTypes.string.isRequired,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n required: PropTypes.bool,\n rules: PropTypes.array,\n selectDefaultValue: PropTypes.shape({}),\n selectOptions: COMBOBOX_SELECT_OPTIONS.isRequired,\n selectPlaceholder: PropTypes.string,\n suggestionList: COMBOBOX_SUGGESTION_LIST,\n validator: PropTypes.func,\n withoutBorder: PropTypes.bool\n}\n\nexport default FormCombobox\n"],"names":["FormCombobox","comboboxClassName","density","disabled","hideSearchInput","inputDefaultValue","inputPlaceholder","invalidText","label","maxSuggestedMatches","name","onBlur","onChange","onFocus","required","rules","selectDefaultValue","selectOptions","selectPlaceholder","suggestionList","validator","withoutBorder","input","meta","useField","inputValue","setInputValue","useState","selectValue","setSelectValue","dropdownStyle","setDropdownStyle","showSelectDropdown","setShowSelectDropdown","showSuggestionList","setShowSuggestionList","dropdownList","setDropdownList","searchIsFocused","setSearchIsFocused","isInvalid","setIsInvalid","validationRules","setValidationRules","showValidationRules","setShowValidationRules","comboboxRef","useRef","selectRef","inputRef","suggestionListRef","useDetectOutsideClick","labelClassNames","classnames","inputClassNames","useEffect","prevState","rule","err","handleOutsideClick","useCallback","event","handleScroll","getValidationRules","isValid","ValidationTemplate","handleInputChange","target","handleSelectOptionClick","selectedOption","handleSuggestionListOptionClick","option","inputValueItems","valueIndex","formattedValue","inputOnFocus","suggestionListSearchChange","toggleSelect","validateField","value","allValues","valueToValidate","validationError","isEmpty","newRules","isValidField","checkPatternsValidity","invalidRules","warningIconClick","state","comboboxClassNames","iconClassNames","selectValueClassNames","wrapperClassNames","jsx","Field","jsxs","Arrow","PopUpDialog","selectOptionClassNames","SearchIcon","Tooltip","TextTooltipTemplate","ExclamationMarkIcon","WarningIcon","OptionsMenu","PropTypes","DENSITY","COMBOBOX_SELECT_OPTIONS","COMBOBOX_SUGGESTION_LIST"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuCA,MAAMA,KAAe,CAAC;AAAA,EACpB,mBAAAC,IAAoB;AAAA,EACpB,SAAAC,KAAU;AAAA,EACV,UAAAC,IAAW;AAAA,EACX,iBAAAC,KAAkB;AAAA,EAClB,mBAAAC,KAAoB;AAAA,EACpB,kBAAAC,KAAmB;AAAA,EACnB,aAAAC,IAAc;AAAA,EACd,OAAAC,IAAQ;AAAA,EACR,qBAAAC,KAAsB;AAAA,EACtB,MAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,UAAAC,IAAW;AAAA,EACX,SAAAC,IAAU;AAAA,EACV,UAAAC,IAAW;AAAA,EACX,OAAAC,IAAQ,CAAC;AAAA,EACT,oBAAAC,KAAqB;AAAA,IACnB,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,WAAW;AAAA,EACb;AAAA,EACA,eAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,gBAAAC,IAAiB,CAAC;AAAA,EAClB,WAAAC,IAAY;AAAA,EACZ,eAAAC,KAAgB;AAClB,MAAM;AACJ,QAAM,EAAE,OAAAC,GAAO,MAAAC,MAASC,GAASd,CAAI,GAC/B,CAACe,GAAYC,CAAa,IAAIC,EAAStB,EAAiB,GACxD,CAACuB,GAAaC,EAAc,IAAIF,EAASX,EAAkB,GAC3D,CAACc,IAAeC,CAAgB,IAAIJ,EAAS;AAAA,IACjD,MAAM;AAAA,EAAA,CACP,GACK,CAACK,GAAoBC,CAAqB,IAAIN,EAAS,EAAK,GAC5D,CAACO,GAAoBC,CAAqB,IAAIR,EAAS,EAAK,GAC5D,CAACS,GAAcC,CAAe,IAAIV,EAASR,CAAc,GACzD,CAACmB,GAAiBC,CAAkB,IAAIZ,EAAS,EAAK,GACtD,CAACa,GAAWC,EAAY,IAAId,EAAS,EAAK,GAC1C,CAACe,GAAiBC,EAAkB,IAAIhB,EAASZ,CAAK,GACtD,CAAC6B,GAAqBC,CAAsB,IAAIlB,EAAS,EAAK,GAC9DmB,IAAcC,EAAO,GACrBC,IAAYD,EAAO,GACnBE,IAAWF,EAAO,GAClBG,IAAoBH,EAAO;AACjC,EAAAI,GAAsBL,GAAa,MAAMD,EAAuB,EAAK,CAAC;AAEtE,QAAMO,KAAkBC,EAAW,qBAAqBlD,KAAY,4BAA4B,GAC1FmD,KAAkBD;AAAA,IACtB;AAAA,IACAzB,EAAY,GAAG,WAAW,KAAK;AAAA,EACjC;AAEA,EAAA2B,EAAU,MAAM;AACd,IAAAZ;AAAA,MAAmB,CAAAa,MACjBA,EAAU,IAAI,CAASC,OAAA;AAAA,QACrB,GAAGA;AAAA,QACH,SACE,CAAClC,EAAK,SAAS,CAAC,MAAM,QAAQA,EAAK,KAAK,IACpC,KACA,CAACA,EAAK,MAAM,KAAK,OAAOmC,EAAI,SAASD,EAAK,IAAI;AAAA,MAAA,EACpD;AAAA,IACJ;AAAA,EAAA,GACC,CAAClC,EAAK,KAAK,CAAC,GAEfgC,EAAU,MAAM;AACd,IAAKjB,KACC,KAAK,UAAUF,CAAY,MAAM,KAAK,UAAUjB,CAAc,KAChEkB,EAAgBlB,CAAc;AAAA,EAGjC,GAAA,CAACiB,GAAcjB,GAAgBmB,CAAe,CAAC,GAElDiB,EAAU,MAAM;AACd,IAAAd;AAAA,MACElB,EAAK,YAAYA,EAAK,cAAcA,EAAK,YAAaA,EAAK,gBAAgBA,EAAK;AAAA,IAClF;AAAA,EACC,GAAA,CAACA,EAAK,SAASA,EAAK,UAAUA,EAAK,cAAcA,EAAK,SAASA,EAAK,UAAU,CAAC;AAElF,QAAMoC,IAAqBC;AAAA,IACzB,CAASC,MAAA;AACP,MACEf,EAAY,WACZ,CAACA,EAAY,QAAQ,SAASe,EAAM,MAAM,KAC1CX,EAAkB,WAClB,CAACA,EAAkB,QAAQ,SAASW,EAAM,MAAM,MAEhDtB,EAAmB,EAAK,GACxBN,EAAsB,EAAK,GAC3BE,EAAsB,EAAK,GAC3Bb,EAAM,OAAO,IAAI,MAAM,MAAM,CAAC,GACpBX,KAAAA,EAAOW,EAAM,KAAK;AAAA,IAEhC;AAAA,IACA,CAACA,GAAOX,CAAM;AAAA,EAChB,GAEMmD,IAAe,CAASD,MAAA;AAC5B,IAAIf,EAAY,WAAWA,EAAY,QAAQ,SAASe,EAAM,MAAM,KAGlE,CAACA,EAAM,OAAO,QAAQ,gBAAgB,KACtC,CAACA,EAAM,OAAO,UAAU,SAAS,qBAAqB,MAEtDhB,EAAuB,EAAK,GAC5BZ,EAAsB,EAAK,GAC3BE,EAAsB,EAAK,GAC3Bc,EAAS,QAAQ,KAAK;AAAA,EAE1B;AAEA,EAAAM,EAAU,OACD,OAAA,iBAAiB,SAASI,CAAkB,GAE5C,MAAM;AACJ,WAAA,oBAAoB,SAASA,CAAkB;AAAA,EACxD,IACC,CAACA,CAAkB,CAAC,GAEvBJ,EAAU,QACJX,KAAuBZ,KAAsBE,MACxC,OAAA,iBAAiB,UAAU4B,GAAc,EAAI,GAE/C,MAAM;AACJ,WAAA,oBAAoB,UAAUA,GAAc,EAAI;AAAA,EACzD,IACC,CAAC9B,GAAoBE,GAAoBU,CAAmB,CAAC;AAEhE,QAAMmB,KAAqB,MAClBrB,EAAgB,IAAI,CAAC,EAAE,SAAAsB,IAAU,IAAO,OAAAxD,GAAO,MAAAE,0BAC5CuD,IAAmB,EAAA,OAAOD,GAAS,mBAAmBxD,KAAYE,CAAM,CACjF,GAGGwD,KAAoB,CAASL,MAAA;AACjC,UAAMM,IAASN,EAAM;AAEJ,IAAA9B,EAAA;AAAA,MACf,MAAM,GAAGoC,EAAO,iBAAiB,KAAKA,EAAO,iBAAiB,EAAE;AAAA,IAAA,CACjE,GAEG7B,KACFC,EAAmB,EAAK,GAG1Bb,EAAcyC,EAAO,KAAK,GAC1B7C,EAAM,SAAS,GAAGM,EAAY,EAAE,GAAGuC,EAAO,KAAK,EAAE,GACjDvD,KAAYA,EAASgB,EAAY,IAAIuC,EAAO,KAAK,GAE7C/B,EAAa,SAAS,KACxBD,EAAsB,EAAI;AAAA,EAE9B,GAEMiC,KAA0B,CAAkBC,MAAA;AAC5C,IAAAA,EAAe,OAAOzC,EAAY,MACpCC,GAAewC,CAAc,GACvB/C,EAAA,SAAS+C,EAAe,EAAE,GAChC3C,EAAc,EAAE,GACJd,KAAAA,EAASyD,EAAe,EAAE,GACtCpC,EAAsB,EAAK,GAC3BgB,EAAS,QAAQ,WAAW,IAC5BA,EAAS,QAAQ,MAAM,MAEvBhB,EAAsB,EAAK,GAC3BgB,EAAS,QAAQ,WAAW,IAC5BA,EAAS,QAAQ,MAAM;AAAA,EAE3B,GAEMqB,KAAkC,CAAUC,MAAA;AAC1C,UAAAC,IAAkB/C,EAAW,MAAM,GAAG,GACtCgD,IAAaD,EAAgB,SAAS;AAC5C,QAAIE,IAAiBH,EAAO,kBACxBC,EAAgBC,CAAU,EAAE,QAAQ,IAAI,OAAO,GAAGF,EAAO,eAAe,IAAI,GAAG,EAAE,IACjFA,EAAO,KACPA,EAAO;AAEX,IAAIC,EAAgB,UAAU/D,KAAsB,MAAqBiE,KAAA,MAEzEF,EAAgBC,CAAU,IAAIC,GAE1BpC,KACFC,EAAmB,EAAK,GAGtBiC,EAAgB,KAAK,GAAG,MAAM/C,MAClBC,EAAA8C,EAAgB,KAAK,GAAG,CAAC,GACjClD,EAAA,SAAS,GAAGM,EAAY,EAAE,GAAG4C,EAAgB,KAAK,GAAG,CAAC,EAAE,GAC9D5D,KAAYA,EAASgB,EAAY,IAAI4C,EAAgB,KAAK,GAAG,CAAC,IAGhErC,EAAsB,EAAK,GAC3Bc,EAAS,QAAQ,MAAM,GACNlB,EAAA;AAAA,MACf,MAAM,GAAGkB,EAAS,QAAQ,iBAAiB,KAAKA,EAAS,QAAQ,iBAAiB,EAAE;AAAA,IAAA,CACrF;AAAA,EACH,GAEM0B,KAAe,CAASd,MAAA;AAC5B,IAAAhD,KAAWA,EAAQ,GACnBS,EAAM,QAAQ,IAAI,MAAM,OAAO,CAAC,GAE5BU,KACFC,EAAsB,EAAK,GAIxBgB,EAAS,QAAQ,iBAQpBd,EAAsB,EAAI,IAP1B,WAAW,MAAM;AACE,MAAAJ,EAAA;AAAA,QACf,MAAM,GAAG8B,EAAM,OAAO,iBAAiB,KAAKA,EAAM,OAAO,iBAAiB,EAAE;AAAA,MAAA,CAC7E,GACD1B,EAAsB,EAAI;AAAA,IAAA,CAC3B;AAAA,EAIL,GAEMyC,KAA6B,CAASf,MAAA;AAC1C,IAAAA,EAAM,QAAQ,GACdxB;AAAA,MAAgB,MACdlB,EAAe,OAAO,CAAUoD,MACvBA,EAAO,GAAG,WAAWV,EAAM,OAAO,KAAK,CAC/C;AAAA,IACH;AAAA,EACF,GAEMgB,IAAejB,EAAY,MAAM;AACrC,IAAI5B,KACFC,EAAsB,EAAK,GAC3BX,EAAM,OAAO,IAAI,MAAM,MAAM,CAAC,GACpBX,KAAAA,EAAOW,EAAM,KAAK,MAE5Ba,EAAsB,EAAK,GAC3BU,EAAuB,EAAK,GACXd,EAAA;AAAA,MACf,MAAM;AAAA,IAAA,CACP,GACDE,EAAsB,EAAI,GAC1BX,EAAM,QAAQ,IAAI,MAAM,OAAO,CAAC,GACrBT,KAAAA,EAAQS,EAAM,KAAK;AAAA,KAE/B,CAACA,GAAOX,GAAQE,GAASmB,CAAkB,CAAC,GAEzC8C,KAAgB,CAACC,IAAQ,IAAIC,MAAc;AAC/C,UAAMC,IAAkBF,EAAM,WAAWnD,EAAY,EAAE,IACnDmD,EAAM,UAAUnD,EAAY,GAAG,MAAM,IACpCmD,KAAS;AACd,QAAIG,IAAkB;AAElB,QAAA,CAACC,EAAQzC,CAAe,GAAG;AAC7B,YAAM,CAAC0C,GAAUC,EAAY,IAAIC,GAAsBvE,GAAOkE,CAAe,GACvEM,KAAeH,EAAS,OAAO,CAAQ3B,MAAA,CAACA,EAAK,OAAO;AAE1D,MAAK4B,OACeH,IAAAK,GAAa,IAAI,CAAA9B,OAAS,EAAE,MAAMA,EAAK,MAAM,OAAOA,EAAK,MAAQ,EAAA;AAAA,IACrF;AAGE,WAAA0B,EAAQD,CAAe,MACrBD,EAAgB,WAAW,GAAG,IAChCC,IAAkB,EAAE,MAAM,SAAS,OAAO3E,EAAY,IAC7CO,KAAYmE,EAAgB,KAAK,EAAE,WAAW,MACvDC,IAAkB,EAAE,MAAM,YAAY,OAAO,yBAAyB,KAItE,CAACA,KAAmB9D,MACJ8D,IAAA9D,EAAU2D,GAAOC,CAAS,IAGvCE;AAAA,EACT,GAEMM,KAAmB,MAAM;AACN,IAAA3C,EAAA,CAAA4C,MAAS,CAACA,CAAK,GACtCxD,EAAsB,EAAK;AAAA,EAC7B,GAEMyD,KAAqBrC;AAAA,IACzBpD;AAAA,IACA;AAAA,IACA;AAAA,IACAuC,KAAa;AAAA,EACf,GACMmD,KAAiBtC;AAAA,IACrBrB,KAAsB;AAAA,IACtB;AAAA,EACF,GACM4D,KAAwBvC,EAAWzB,EAAY,SAAS,GAExDiE,KAAoBxC;AAAA,IACxB;AAAA,IACA,uBAAuBnD,EAAO;AAAA,IAC9BC,KAAY;AAAA,IACZqC,KAAa;AAAA,IACbnB,MAAiB;AAAA,EACnB;AAGE,SAAA,gBAAAyE,EAACC,IAAM,EAAA,MAAArF,GAAY,UAAUoE,IAC1B,UAAC,CAAA,EAAE,OAAAxD,GAAO,MAAAC,EACT,MAAA;;AAAA,2BAAAyE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWN;AAAA,QACX,KAAK5C;AAAA,QACL,eAAapC,IAAO,GAAGA,CAAI,mBAAmB;AAAA,QAE7C,UAAA;AAAA,UACCF,KAAA,gBAAAsF,EAAC,OAAI,EAAA,WAAW1C,IACd,UAAA,gBAAA4C,EAAC,WAAM,eAAY,SAAQ,SAAS1E,EAAM,MACvC,UAAA;AAAA,YAAAd;AAAA,aACCM,KAAY4B,EAAgB,KAAK,CAAAe,MAAQA,EAAK,SAAS,UAAU,MAChE,gBAAAqC,EAAA,QAAA,EAAK,WAAU,+BAA8B,UAAE,KAAA,CAAA;AAAA,UAAA,EAAA,CAEpD,EACF,CAAA;AAAA,UAEF,gBAAAE,EAAC,OAAI,EAAA,WAAWH,IACd,UAAA;AAAA,YAAC,gBAAAC,EAAA,OAAA,EAAI,WAAU,qBACb,UAAA,gBAAAA,EAACG,MAAM,WAAWN,IAAgB,SAASd,EAAA,CAAc,EAC3D,CAAA;AAAA,YACC,gBAAAmB,EAAA,OAAA,EAAI,WAAU,mDAAkD,KAAKhD,GACpE,UAAA;AAAA,cAAA,gBAAAgD,EAAC,OAAI,EAAA,WAAU,sCAAqC,SAASnB,GAC3D,UAAA;AAAA,gBAAA,gBAAAiB,EAAC,QAAK,EAAA,WAAWF,IAAwB,UAAAhE,EAAY,IAAG;AAAA,gBACvDA,EAAY,GAAG,WAAW,KAAKV,KAC9B,gBAAA4E,EAAC,OAAI,EAAA,WAAU,oCACb,UAAA,gBAAAA,EAAC,SAAO,EAAA,UAAA5E,EAAA,CAAkB,EAC5B,CAAA;AAAA,cAAA,GAEJ;AAAA,cACCc,KACC,gBAAA8D;AAAA,gBAACI;AAAA,gBAAA;AAAA,kBACC,gBAAc;AAAA,kBACd,gBAAgB;AAAA,oBACd,SAASlD;AAAA,oBACT,UAAU;AAAA,kBACZ;AAAA,kBACA,WAAU;AAAA,kBAEV,UAAA,gBAAA8C,EAAC,QAAG,WAAU,sCAAqC,KAAK5C,GACrD,UAAAjC,GAAc,IAAI,CAAUsD,MAAA;AACvB,wBAAA,CAACA,EAAO,QAAQ;AAClB,4BAAM4B,IAAyB9C;AAAA,wBAC7B;AAAA,wBACAkB,EAAO;AAAA,sBACT;AAGE,6BAAA,gBAAAuB;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAWK;AAAA,0BAEX,SAAS,MAAM/B,GAAwBG,CAAM;AAAA,0BAE5C,UAAOA,EAAA;AAAA,wBAAA;AAAA,wBAHHA,EAAO;AAAA,sBAId;AAAA,oBAAA;AAAA,kBAEJ,CACD,EACH,CAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF,GAEJ;AAAA,YACA,gBAAAuB;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,cAAa;AAAA,gBACb,WAAWxC;AAAA,gBACX,eAAa5C,IAAO,GAAGA,CAAI,yBAAyB;AAAA,gBACpD,IAAIY,EAAM;AAAA,gBACV,UAAU4C;AAAA,gBACV,SAASS;AAAA,gBACT,aAAarE;AAAA,gBACb,KAAK2C;AAAA,gBACL,UAAAnC;AAAA,gBACA,MAAK;AAAA,gBACL,OAAOW;AAAA,cAAA;AAAA,YACT;AAAA,YACCS,MAAuBE,EAAa,SAAS,KAAKE,MACjD,gBAAAwD;AAAA,cAACI;AAAA,cAAA;AAAA,gBACC,gBAAc;AAAA,gBACd,gBAAgB;AAAA,kBACd,SAASlD;AAAA,kBACT,UAAU;AAAA,gBACZ;AAAA,gBACA,WAAU;AAAA,gBACV,OAAO;AAAA,kBACL,GAAGlB;AAAA,gBACL;AAAA,gBAEA,UAAA,gBAAAkE,EAAC,OAAI,EAAA,KAAK9C,GACP,UAAA;AAAA,kBAAA,CAAC9C,MACA,gBAAA4F,EAAC,OAAI,EAAA,WAAU,uCACb,UAAA;AAAA,oBAAA,gBAAAF;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,cAAa;AAAA,wBACb,eAAapF,IAAO,GAAGA,CAAI,0BAA0B;AAAA,wBACrD,WAAU;AAAA,wBACV,UAAUkE;AAAA,wBACV,SAAS,MAAMrC,EAAmB,EAAI;AAAA,wBACtC,aAAY;AAAA,wBACZ,MAAK;AAAA,sBAAA;AAAA,oBACP;AAAA,sCACC6D,IAAW,CAAA,CAAA;AAAA,kBAAA,GACd;AAAA,oCAED,MAAG,EAAA,WAAU,sCACX,UAAA9D,KAAmBF,EAAa,WAAW,IACzC,gBAAA0D,EAAA,MAAA,EAAG,WAAU,6CAA0D,UAAA,UAAA,GAAV,SAE9D,IAEA1D,EAAa,IAAI,CACf2C,MAAA,gBAAAe;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBAEV,SAAS,MAAMxB,GAAgCS,CAAK;AAAA,sBAEnD,UAAMA,EAAA;AAAA,oBAAA;AAAA,oBAHFA,EAAM;AAAA,kBAAA,CAKd,EAEL,CAAA;AAAA,gBAAA,EACF,CAAA;AAAA,cAAA;AAAA,YACF;AAAA,YAEF,gBAAAiB,EAAC,OAAI,EAAA,WAAU,qBACZ,UAAA;AAAA,cAAAxD,KAAa,CAAC,MAAM,QAAQjB,EAAK,KAAK,KACrC,gBAAAuE;AAAA,gBAACO;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,4BAAWC,IAAoB,EAAA,QAAM/E,IAAAA,EAAK,UAALA,gBAAAA,EAAY,UAAShB,GAAa,SAAO,GAAC,CAAA;AAAA,kBAE/E,4BAACgG,IAAoB,CAAA,CAAA;AAAA,gBAAA;AAAA,cACvB;AAAA,cAED/D,KAAa,MAAM,QAAQjB,EAAK,KAAK,KACpC,gBAAAuE,EAAC,UAAO,EAAA,WAAU,uBAAsB,SAASN,IAC/C,UAAA,gBAAAM,EAACU,MAAY,EACf,CAAA;AAAA,YAAA,GAEJ;AAAA,YACC,CAACrB,EAAQzC,CAAe,uBACtB+D,IAAY,EAAA,MAAM7D,GAAqB,KAAK,EAAE,mBAAmBE,EAAY,GAC3E,eACH,CAAA;AAAA,UAAA,EAEJ,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,KAGN;AAEJ;AAEA9C,GAAa,YAAY;AAAA,EACvB,mBAAmB0G,EAAU;AAAA,EAC7B,SAASC;AAAA,EACT,UAAUD,EAAU;AAAA,EACpB,iBAAiBA,EAAU;AAAA,EAC3B,mBAAmBA,EAAU;AAAA,EAC7B,kBAAkBA,EAAU;AAAA,EAC5B,aAAaA,EAAU;AAAA,EACvB,OAAOA,EAAU;AAAA,EACjB,qBAAqBA,EAAU;AAAA,EAC/B,MAAMA,EAAU,OAAO;AAAA,EACvB,QAAQA,EAAU;AAAA,EAClB,UAAUA,EAAU;AAAA,EACpB,SAASA,EAAU;AAAA,EACnB,UAAUA,EAAU;AAAA,EACpB,OAAOA,EAAU;AAAA,EACjB,oBAAoBA,EAAU,MAAM,EAAE;AAAA,EACtC,eAAeE,GAAwB;AAAA,EACvC,mBAAmBF,EAAU;AAAA,EAC7B,gBAAgBG;AAAA,EAChB,WAAWH,EAAU;AAAA,EACrB,eAAeA,EAAU;AAC3B;"}
@@ -57,4 +57,10 @@ export function useTable({ ref, selectedItem, skipTableWrapper, tableClassName }
57
57
  tableStore: any;
58
58
  tableWrapperClass: string;
59
59
  };
60
+ export function useTableScroll({ content, selectedItem, isAllVersions, tableId }: {
61
+ content: any;
62
+ selectedItem: any;
63
+ isAllVersions: any;
64
+ tableId?: string;
65
+ }): void;
60
66
  //# sourceMappingURL=useTable.hook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTable.hook.d.ts","sourceRoot":"","sources":["../../src/lib/hooks/useTable.hook.jsx"],"names":[],"mappings":"AAoHO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4EN"}
1
+ {"version":3,"file":"useTable.hook.d.ts","sourceRoot":"","sources":["../../src/lib/hooks/useTable.hook.jsx"],"names":[],"mappings":"AAoHO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4EN;AAEM;;;;;SA8EN"}
@@ -1,81 +1,81 @@
1
- import { jsx as b, jsxs as v } from "react/jsx-runtime";
2
- import { useRef as u, useEffect as w, useCallback as I } from "react";
1
+ import { jsx as w, jsxs as C } from "react/jsx-runtime";
2
+ import { useRef as T, useEffect as _, useCallback as v, useMemo as I } from "react";
3
3
  import e from "prop-types";
4
- import y from "classnames";
5
- import { useSelector as B } from "react-redux";
6
- import { isEmpty as C } from "lodash";
7
- import j from "../elements/TableHead/TableHead.mjs";
8
- import { MAIN_TABLE_BODY_ID as E, MAIN_TABLE_ID as N } from "../constants.mjs";
9
- import { VIRTUALIZATION_CONFIG as q, SORT_PROPS as O } from "../types.mjs";
10
- const P = ({
11
- children: l,
12
- hideActionsMenu: f = !1,
13
- mainRowItemsCount: R = 1,
14
- pageData: r = null,
15
- renderDetails: m = null,
16
- selectedItem: _ = {},
17
- sortProps: i = null,
18
- tableBodyRef: h,
19
- tableClass: s,
20
- tableContentRef: n,
21
- tableHeadRef: c,
22
- tableHeaders: o,
23
- tablePanelRef: g,
24
- tableRef: T,
25
- tableStore: a = null,
26
- tableWrapperClass: t,
27
- virtualizationConfig: d = {
4
+ import B from "classnames";
5
+ import { useSelector as N } from "react-redux";
6
+ import { isEmpty as P } from "lodash";
7
+ import S from "../elements/TableHead/TableHead.mjs";
8
+ import { MAIN_TABLE_BODY_ID as x, MAIN_TABLE_ID as E } from "../constants.mjs";
9
+ import { VIRTUALIZATION_CONFIG as O, SORT_PROPS as A } from "../types.mjs";
10
+ const L = ({
11
+ children: n,
12
+ hideActionsMenu: s = !1,
13
+ mainRowItemsCount: p = 1,
14
+ pageData: u = null,
15
+ renderDetails: l = null,
16
+ selectedItem: f = {},
17
+ sortProps: c = null,
18
+ tableBodyRef: m,
19
+ tableClass: t,
20
+ tableContentRef: d,
21
+ tableHeadRef: r,
22
+ tableHeaders: a,
23
+ tablePanelRef: i,
24
+ tableRef: h,
25
+ tableStore: b = null,
26
+ tableWrapperClass: o,
27
+ virtualizationConfig: g = {
28
28
  tableBodyPaddingTop: 0,
29
29
  startIndex: -1,
30
30
  endIndex: -1
31
31
  }
32
- }) => /* @__PURE__ */ b("div", { className: "table__flex", children: /* @__PURE__ */ v("div", { className: "table__content", id: "table-content", ref: n, children: [
33
- /* @__PURE__ */ v("div", { className: t, children: [
34
- /* @__PURE__ */ v(
32
+ }) => /* @__PURE__ */ w("div", { className: "table__flex", children: /* @__PURE__ */ C("div", { className: "table__content", id: "table-content", ref: d, children: [
33
+ /* @__PURE__ */ C("div", { className: o, children: [
34
+ /* @__PURE__ */ C(
35
35
  "table",
36
36
  {
37
- id: N,
38
- className: s,
37
+ id: E,
38
+ className: t,
39
39
  cellPadding: "0",
40
40
  cellSpacing: "0",
41
- ref: T,
41
+ ref: h,
42
42
  children: [
43
- (o == null ? void 0 : o.length) > 0 && /* @__PURE__ */ b(
44
- j,
43
+ (a == null ? void 0 : a.length) > 0 && /* @__PURE__ */ w(
44
+ S,
45
45
  {
46
- content: o,
47
- hideActionsMenu: f,
48
- mainRowItemsCount: R,
49
- ref: c,
50
- selectedItem: _,
51
- sortProps: i
46
+ content: a,
47
+ hideActionsMenu: s,
48
+ mainRowItemsCount: p,
49
+ ref: r,
50
+ selectedItem: f,
51
+ sortProps: c
52
52
  }
53
53
  ),
54
- /* @__PURE__ */ b(
54
+ /* @__PURE__ */ w(
55
55
  "tbody",
56
56
  {
57
57
  className: "table-body",
58
- id: E,
59
- style: { paddingTop: d.tableBodyPaddingTop },
60
- ref: h,
61
- children: l
58
+ id: x,
59
+ style: { paddingTop: g.tableBodyPaddingTop },
60
+ ref: m,
61
+ children: n
62
62
  }
63
63
  )
64
64
  ]
65
65
  }
66
66
  ),
67
- (a == null ? void 0 : a.isTablePanelOpen) && (r == null ? void 0 : r.tablePanel) && /* @__PURE__ */ b("div", { className: "table__panel-container", ref: g, children: /* @__PURE__ */ b("div", { className: "table__panel", children: r.tablePanel }) })
67
+ (b == null ? void 0 : b.isTablePanelOpen) && (u == null ? void 0 : u.tablePanel) && /* @__PURE__ */ w("div", { className: "table__panel-container", ref: i, children: /* @__PURE__ */ w("div", { className: "table__panel", children: u.tablePanel }) })
68
68
  ] }),
69
- m && m()
69
+ l && l()
70
70
  ] }) });
71
- P.propTypes = {
71
+ L.propTypes = {
72
72
  children: e.node.isRequired,
73
73
  hideActionsMenu: e.bool,
74
74
  mainRowItemsCount: e.number,
75
75
  pageData: e.object,
76
76
  renderDetails: e.func,
77
77
  selectedItem: e.object,
78
- sortProps: O,
78
+ sortProps: A,
79
79
  tableBodyRef: e.object.isRequired,
80
80
  tableClass: e.string.isRequired,
81
81
  tableContentRef: e.object.isRequired,
@@ -85,45 +85,91 @@ P.propTypes = {
85
85
  tableRef: e.object.isRequired,
86
86
  tableStore: e.object,
87
87
  tableWrapperClass: e.string.isRequired,
88
- virtualizationConfig: q
88
+ virtualizationConfig: O
89
89
  };
90
- const F = ({ ref: l, selectedItem: f, skipTableWrapper: R = !1, tableClassName: r = "" }) => {
91
- const m = u(null), _ = u(null), i = (l == null ? void 0 : l.tableRef) ?? m, h = (l == null ? void 0 : l.tableBodyRef) ?? _, s = u(null), n = u(null), c = u(null), o = B((t) => t.tableStore) ?? {}, g = y(
90
+ const K = ({ ref: n, selectedItem: s, skipTableWrapper: p = !1, tableClassName: u = "" }) => {
91
+ const l = T(null), f = T(null), c = (n == null ? void 0 : n.tableRef) ?? l, m = (n == null ? void 0 : n.tableBodyRef) ?? f, t = T(null), d = T(null), r = T(null), a = N((o) => o.tableStore) ?? {}, i = B(
92
92
  "table",
93
93
  "table-main",
94
- !C(f) && "table-with-details",
95
- r && r
96
- ), T = y(!R && "table__wrapper");
97
- w(() => {
98
- const t = () => {
99
- if (c != null && c.current && (s != null && s.current) && (n != null && n.current)) {
100
- const d = s.current.getBoundingClientRect().height, L = c.current.getBoundingClientRect(), p = window.innerHeight - L.top;
101
- n.current.style.height = d > p ? `${p}px` : `${p - (p - d)}px`;
94
+ !P(s) && "table-with-details",
95
+ u && u
96
+ ), h = B(!p && "table__wrapper");
97
+ _(() => {
98
+ const o = () => {
99
+ if (r != null && r.current && (t != null && t.current) && (d != null && d.current)) {
100
+ const g = t.current.getBoundingClientRect().height, y = r.current.getBoundingClientRect(), R = window.innerHeight - y.top;
101
+ d.current.style.height = g > R ? `${R}px` : `${R - (R - g)}px`;
102
102
  }
103
103
  };
104
- return o.isTablePanelOpen && n.current && (t(), document.getElementById("main-wrapper").addEventListener("scroll", t), window.addEventListener("resize", t)), () => {
105
- window.removeEventListener("scroll", t), window.removeEventListener("resize", t);
104
+ return a.isTablePanelOpen && d.current && (o(), document.getElementById("main-wrapper").addEventListener("scroll", o), window.addEventListener("resize", o)), () => {
105
+ window.removeEventListener("scroll", o), window.removeEventListener("resize", o);
106
106
  };
107
- }, [o.isTablePanelOpen]);
108
- const a = I(
109
- (t) => {
110
- i.current && (t.target.scrollLeft > 0 ? i.current.classList.add("table__scrolled") : i.current.classList.remove("table__scrolled"));
107
+ }, [a.isTablePanelOpen]);
108
+ const b = v(
109
+ (o) => {
110
+ c.current && (o.target.scrollLeft > 0 ? c.current.classList.add("table__scrolled") : c.current.classList.remove("table__scrolled"));
111
111
  },
112
- [i]
112
+ [c]
113
113
  );
114
- return w(() => (window.addEventListener("scroll", a, !0), () => window.removeEventListener("scroll", a, !0)), [a]), {
115
- TableContainer: P,
116
- tableBodyRef: h,
117
- tableClass: g,
118
- tableContentRef: s,
119
- tableHeadRef: c,
120
- tablePanelRef: n,
121
- tableRef: i,
122
- tableStore: o,
123
- tableWrapperClass: T
114
+ return _(() => (window.addEventListener("scroll", b, !0), () => window.removeEventListener("scroll", b, !0)), [b]), {
115
+ TableContainer: L,
116
+ tableBodyRef: m,
117
+ tableClass: i,
118
+ tableContentRef: t,
119
+ tableHeadRef: r,
120
+ tablePanelRef: d,
121
+ tableRef: c,
122
+ tableStore: a,
123
+ tableWrapperClass: h
124
124
  };
125
+ }, Z = ({
126
+ content: n,
127
+ selectedItem: s,
128
+ isAllVersions: p,
129
+ tableId: u = E
130
+ }) => {
131
+ const l = T(null), f = I(
132
+ () => p ? "identifierUnique" : "identifier",
133
+ [p]
134
+ ), c = v(
135
+ (m, t, d = !1) => {
136
+ const r = t == null ? void 0 : t.findIndex(
137
+ (i) => {
138
+ var h;
139
+ return ((h = i == null ? void 0 : i.ui) == null ? void 0 : h[f]) === m;
140
+ }
141
+ ), a = () => {
142
+ var h;
143
+ const i = document.getElementById(u);
144
+ if (r && i) {
145
+ const b = i.getElementsByTagName("tr");
146
+ if (r <= b.length) {
147
+ const o = ((h = i.querySelector("thead")) == null ? void 0 : h.getBoundingClientRect().height) ?? 0, g = b[r].getBoundingClientRect(), y = i.getBoundingClientRect(), R = g.height / 2, q = (y.height - o) / 2, j = g.height * (r + 1) - R - q;
148
+ i.scrollTo({
149
+ top: j
150
+ });
151
+ }
152
+ }
153
+ };
154
+ r >= 0 && (d ? requestAnimationFrame(() => {
155
+ a();
156
+ }) : a());
157
+ },
158
+ [f, u]
159
+ );
160
+ _(() => {
161
+ var m, t;
162
+ try {
163
+ P(s) ? l.current && (c((t = l.current) == null ? void 0 : t[f], n), l.current = null) : l.current ? l.current = s.ui : (l.current = s.ui, c((m = s == null ? void 0 : s.ui) == null ? void 0 : m[f], n, !0));
164
+ } catch {
165
+ l.current = null;
166
+ }
167
+ }, [s, n, c, f]), _(() => () => {
168
+ l.current = null;
169
+ }, [n]);
125
170
  };
126
171
  export {
127
- F as useTable
172
+ K as useTable,
173
+ Z as useTableScroll
128
174
  };
129
175
  //# sourceMappingURL=useTable.hook.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTable.hook.mjs","sources":["../../src/lib/hooks/useTable.hook.jsx"],"sourcesContent":["/*\nCopyright 2019 Iguazio Systems Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\n\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport React, { useCallback, useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport { useSelector } from 'react-redux'\nimport { isEmpty } from 'lodash'\n\nimport TableHead from '../elements/TableHead/TableHead'\n\nimport { MAIN_TABLE_BODY_ID, MAIN_TABLE_ID } from '../constants'\nimport { SORT_PROPS } from '../types'\nimport { VIRTUALIZATION_CONFIG } from '../types'\n\nconst TableContainer = ({\n children,\n hideActionsMenu = false,\n mainRowItemsCount = 1,\n pageData = null,\n renderDetails = null,\n selectedItem = {},\n sortProps = null,\n tableBodyRef,\n tableClass,\n tableContentRef,\n tableHeadRef,\n tableHeaders,\n tablePanelRef,\n tableRef,\n tableStore = null,\n tableWrapperClass,\n virtualizationConfig = {\n tableBodyPaddingTop: 0,\n startIndex: -1,\n endIndex: -1\n }\n}) => {\n return (\n <div className=\"table__flex\">\n <div className=\"table__content\" id=\"table-content\" ref={tableContentRef}>\n <div className={tableWrapperClass}>\n <table\n id={MAIN_TABLE_ID}\n className={tableClass}\n cellPadding=\"0\"\n cellSpacing=\"0\"\n ref={tableRef}\n >\n {tableHeaders?.length > 0 && (\n <TableHead\n content={tableHeaders}\n hideActionsMenu={hideActionsMenu}\n mainRowItemsCount={mainRowItemsCount}\n ref={tableHeadRef}\n selectedItem={selectedItem}\n sortProps={sortProps}\n />\n )}\n <tbody\n className=\"table-body\"\n id={MAIN_TABLE_BODY_ID}\n style={{ paddingTop: virtualizationConfig.tableBodyPaddingTop }}\n ref={tableBodyRef}\n >\n {children}\n </tbody>\n </table>\n {tableStore?.isTablePanelOpen && pageData?.tablePanel && (\n <div className=\"table__panel-container\" ref={tablePanelRef}>\n <div className=\"table__panel\">{pageData.tablePanel}</div>\n </div>\n )}\n </div>\n {renderDetails && renderDetails()}\n </div>\n </div>\n )\n}\n\nTableContainer.propTypes = {\n children: PropTypes.node.isRequired,\n hideActionsMenu: PropTypes.bool,\n mainRowItemsCount: PropTypes.number,\n pageData: PropTypes.object,\n renderDetails: PropTypes.func,\n selectedItem: PropTypes.object,\n sortProps: SORT_PROPS,\n tableBodyRef: PropTypes.object.isRequired,\n tableClass: PropTypes.string.isRequired,\n tableContentRef: PropTypes.object.isRequired,\n tableHeadRef: PropTypes.object.isRequired,\n tableHeaders: PropTypes.arrayOf(PropTypes.object).isRequired,\n tablePanelRef: PropTypes.object.isRequired,\n tableRef: PropTypes.object.isRequired,\n tableStore: PropTypes.object,\n tableWrapperClass: PropTypes.string.isRequired,\n virtualizationConfig: VIRTUALIZATION_CONFIG\n}\n\nexport const useTable = ({ ref, selectedItem, skipTableWrapper = false, tableClassName = '' }) => {\n const tableRefLocal = useRef(null)\n const tableBodyRefLocal = useRef(null)\n const tableRef = ref?.tableRef ?? tableRefLocal\n const tableBodyRef = ref?.tableBodyRef ?? tableBodyRefLocal\n const tableContentRef = useRef(null)\n const tablePanelRef = useRef(null)\n const tableHeadRef = useRef(null)\n const tableStore = useSelector(store => store.tableStore) ?? {}\n\n const tableClass = classnames(\n 'table',\n 'table-main',\n !isEmpty(selectedItem) && 'table-with-details',\n tableClassName && tableClassName\n )\n const tableWrapperClass = classnames(!skipTableWrapper && 'table__wrapper')\n\n useEffect(() => {\n const calculatePanelHeight = () => {\n if (tableHeadRef?.current && tableContentRef?.current && tablePanelRef?.current) {\n const tableContentHeight = tableContentRef.current.getBoundingClientRect().height\n const tableHeadCords = tableHeadRef.current.getBoundingClientRect()\n const panelHeight = window.innerHeight - tableHeadCords.top\n\n tablePanelRef.current.style.height =\n tableContentHeight > panelHeight\n ? `${panelHeight}px`\n : `${panelHeight - (panelHeight - tableContentHeight)}px`\n }\n }\n\n if (tableStore.isTablePanelOpen && tablePanelRef.current) {\n calculatePanelHeight()\n\n document.getElementById('main-wrapper').addEventListener('scroll', calculatePanelHeight)\n window.addEventListener('resize', calculatePanelHeight)\n }\n return () => {\n window.removeEventListener('scroll', calculatePanelHeight)\n window.removeEventListener('resize', calculatePanelHeight)\n }\n }, [tableStore.isTablePanelOpen])\n\n const handleTableHScroll = useCallback(\n e => {\n if (tableRef.current) {\n const tableScrollPosition = e.target.scrollLeft\n\n if (tableScrollPosition > 0) {\n tableRef.current.classList.add('table__scrolled')\n } else {\n tableRef.current.classList.remove('table__scrolled')\n }\n }\n },\n [tableRef]\n )\n\n useEffect(() => {\n window.addEventListener('scroll', handleTableHScroll, true)\n\n return () => window.removeEventListener('scroll', handleTableHScroll, true)\n }, [handleTableHScroll])\n\n return {\n TableContainer,\n tableBodyRef,\n tableClass,\n tableContentRef,\n tableHeadRef,\n tablePanelRef,\n tableRef,\n tableStore,\n tableWrapperClass\n }\n}\n"],"names":["TableContainer","children","hideActionsMenu","mainRowItemsCount","pageData","renderDetails","selectedItem","sortProps","tableBodyRef","tableClass","tableContentRef","tableHeadRef","tableHeaders","tablePanelRef","tableRef","tableStore","tableWrapperClass","virtualizationConfig","jsx","jsxs","MAIN_TABLE_ID","TableHead","MAIN_TABLE_BODY_ID","PropTypes","SORT_PROPS","VIRTUALIZATION_CONFIG","useTable","ref","skipTableWrapper","tableClassName","tableRefLocal","useRef","tableBodyRefLocal","useSelector","store","classnames","isEmpty","useEffect","calculatePanelHeight","tableContentHeight","tableHeadCords","panelHeight","handleTableHScroll","useCallback","e"],"mappings":"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"}
1
+ {"version":3,"file":"useTable.hook.mjs","sources":["../../src/lib/hooks/useTable.hook.jsx"],"sourcesContent":["/*\nCopyright 2019 Iguazio Systems Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\n\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport { useSelector } from 'react-redux'\nimport { isEmpty } from 'lodash'\n\nimport TableHead from '../elements/TableHead/TableHead'\n\nimport { MAIN_TABLE_BODY_ID, MAIN_TABLE_ID } from '../constants'\nimport { SORT_PROPS } from '../types'\nimport { VIRTUALIZATION_CONFIG } from '../types'\n\nconst TableContainer = ({\n children,\n hideActionsMenu = false,\n mainRowItemsCount = 1,\n pageData = null,\n renderDetails = null,\n selectedItem = {},\n sortProps = null,\n tableBodyRef,\n tableClass,\n tableContentRef,\n tableHeadRef,\n tableHeaders,\n tablePanelRef,\n tableRef,\n tableStore = null,\n tableWrapperClass,\n virtualizationConfig = {\n tableBodyPaddingTop: 0,\n startIndex: -1,\n endIndex: -1\n }\n}) => {\n return (\n <div className=\"table__flex\">\n <div className=\"table__content\" id=\"table-content\" ref={tableContentRef}>\n <div className={tableWrapperClass}>\n <table\n id={MAIN_TABLE_ID}\n className={tableClass}\n cellPadding=\"0\"\n cellSpacing=\"0\"\n ref={tableRef}\n >\n {tableHeaders?.length > 0 && (\n <TableHead\n content={tableHeaders}\n hideActionsMenu={hideActionsMenu}\n mainRowItemsCount={mainRowItemsCount}\n ref={tableHeadRef}\n selectedItem={selectedItem}\n sortProps={sortProps}\n />\n )}\n <tbody\n className=\"table-body\"\n id={MAIN_TABLE_BODY_ID}\n style={{ paddingTop: virtualizationConfig.tableBodyPaddingTop }}\n ref={tableBodyRef}\n >\n {children}\n </tbody>\n </table>\n {tableStore?.isTablePanelOpen && pageData?.tablePanel && (\n <div className=\"table__panel-container\" ref={tablePanelRef}>\n <div className=\"table__panel\">{pageData.tablePanel}</div>\n </div>\n )}\n </div>\n {renderDetails && renderDetails()}\n </div>\n </div>\n )\n}\n\nTableContainer.propTypes = {\n children: PropTypes.node.isRequired,\n hideActionsMenu: PropTypes.bool,\n mainRowItemsCount: PropTypes.number,\n pageData: PropTypes.object,\n renderDetails: PropTypes.func,\n selectedItem: PropTypes.object,\n sortProps: SORT_PROPS,\n tableBodyRef: PropTypes.object.isRequired,\n tableClass: PropTypes.string.isRequired,\n tableContentRef: PropTypes.object.isRequired,\n tableHeadRef: PropTypes.object.isRequired,\n tableHeaders: PropTypes.arrayOf(PropTypes.object).isRequired,\n tablePanelRef: PropTypes.object.isRequired,\n tableRef: PropTypes.object.isRequired,\n tableStore: PropTypes.object,\n tableWrapperClass: PropTypes.string.isRequired,\n virtualizationConfig: VIRTUALIZATION_CONFIG\n}\n\nexport const useTable = ({ ref, selectedItem, skipTableWrapper = false, tableClassName = '' }) => {\n const tableRefLocal = useRef(null)\n const tableBodyRefLocal = useRef(null)\n const tableRef = ref?.tableRef ?? tableRefLocal\n const tableBodyRef = ref?.tableBodyRef ?? tableBodyRefLocal\n const tableContentRef = useRef(null)\n const tablePanelRef = useRef(null)\n const tableHeadRef = useRef(null)\n const tableStore = useSelector(store => store.tableStore) ?? {}\n\n const tableClass = classnames(\n 'table',\n 'table-main',\n !isEmpty(selectedItem) && 'table-with-details',\n tableClassName && tableClassName\n )\n const tableWrapperClass = classnames(!skipTableWrapper && 'table__wrapper')\n\n useEffect(() => {\n const calculatePanelHeight = () => {\n if (tableHeadRef?.current && tableContentRef?.current && tablePanelRef?.current) {\n const tableContentHeight = tableContentRef.current.getBoundingClientRect().height\n const tableHeadCords = tableHeadRef.current.getBoundingClientRect()\n const panelHeight = window.innerHeight - tableHeadCords.top\n\n tablePanelRef.current.style.height =\n tableContentHeight > panelHeight\n ? `${panelHeight}px`\n : `${panelHeight - (panelHeight - tableContentHeight)}px`\n }\n }\n\n if (tableStore.isTablePanelOpen && tablePanelRef.current) {\n calculatePanelHeight()\n\n document.getElementById('main-wrapper').addEventListener('scroll', calculatePanelHeight)\n window.addEventListener('resize', calculatePanelHeight)\n }\n return () => {\n window.removeEventListener('scroll', calculatePanelHeight)\n window.removeEventListener('resize', calculatePanelHeight)\n }\n }, [tableStore.isTablePanelOpen])\n\n const handleTableHScroll = useCallback(\n e => {\n if (tableRef.current) {\n const tableScrollPosition = e.target.scrollLeft\n\n if (tableScrollPosition > 0) {\n tableRef.current.classList.add('table__scrolled')\n } else {\n tableRef.current.classList.remove('table__scrolled')\n }\n }\n },\n [tableRef]\n )\n\n useEffect(() => {\n window.addEventListener('scroll', handleTableHScroll, true)\n\n return () => window.removeEventListener('scroll', handleTableHScroll, true)\n }, [handleTableHScroll])\n\n return {\n TableContainer,\n tableBodyRef,\n tableClass,\n tableContentRef,\n tableHeadRef,\n tablePanelRef,\n tableRef,\n tableStore,\n tableWrapperClass\n }\n}\n\nexport const useTableScroll = ({\n content,\n selectedItem,\n isAllVersions,\n tableId = MAIN_TABLE_ID\n}) => {\n const lastSelectedItemDataRef = useRef(null)\n const itemIdentifierKey = useMemo(\n () => (isAllVersions ? 'identifierUnique' : 'identifier'),\n [isAllVersions]\n )\n\n const handleSelectItemChanges = useCallback(\n (identifier, content, async = false) => {\n const selectedItemIndex = content?.findIndex(\n item => item?.ui?.[itemIdentifierKey] === identifier\n )\n\n const triggerScroll = () => {\n const tableElement = document.getElementById(tableId)\n\n if (selectedItemIndex && tableElement) {\n const rows = tableElement.getElementsByTagName('tr')\n\n if (selectedItemIndex <= rows.length) {\n const theadHeight =\n tableElement.querySelector('thead')?.getBoundingClientRect().height ?? 0\n const rowRect = rows[selectedItemIndex].getBoundingClientRect()\n const tableRect = tableElement.getBoundingClientRect()\n const rowCenterY = rowRect.height / 2\n const tableCenterY = (tableRect.height - theadHeight) / 2\n const heightToRow = rowRect.height * (selectedItemIndex + 1)\n const scrollY = heightToRow - rowCenterY - tableCenterY\n\n tableElement.scrollTo({\n top: scrollY\n })\n }\n }\n }\n\n if (selectedItemIndex >= 0) {\n if (async) {\n requestAnimationFrame(() => {\n triggerScroll()\n })\n } else {\n triggerScroll()\n }\n }\n },\n [itemIdentifierKey, tableId]\n )\n\n useEffect(() => {\n try {\n if (!isEmpty(selectedItem)) {\n if (!lastSelectedItemDataRef.current) {\n lastSelectedItemDataRef.current = selectedItem.ui\n handleSelectItemChanges(selectedItem?.ui?.[itemIdentifierKey], content, true)\n } else {\n lastSelectedItemDataRef.current = selectedItem.ui\n }\n } else if (lastSelectedItemDataRef.current) {\n handleSelectItemChanges(lastSelectedItemDataRef.current?.[itemIdentifierKey], content)\n\n lastSelectedItemDataRef.current = null\n }\n } catch {\n lastSelectedItemDataRef.current = null\n }\n }, [selectedItem, content, handleSelectItemChanges, itemIdentifierKey])\n\n useEffect(() => {\n return () => {\n lastSelectedItemDataRef.current = null\n }\n }, [content])\n}\n"],"names":["TableContainer","children","hideActionsMenu","mainRowItemsCount","pageData","renderDetails","selectedItem","sortProps","tableBodyRef","tableClass","tableContentRef","tableHeadRef","tableHeaders","tablePanelRef","tableRef","tableStore","tableWrapperClass","virtualizationConfig","jsx","jsxs","MAIN_TABLE_ID","TableHead","MAIN_TABLE_BODY_ID","PropTypes","SORT_PROPS","VIRTUALIZATION_CONFIG","useTable","ref","skipTableWrapper","tableClassName","tableRefLocal","useRef","tableBodyRefLocal","useSelector","store","classnames","isEmpty","useEffect","calculatePanelHeight","tableContentHeight","tableHeadCords","panelHeight","handleTableHScroll","useCallback","e","useTableScroll","content","isAllVersions","tableId","lastSelectedItemDataRef","itemIdentifierKey","useMemo","handleSelectItemChanges","identifier","async","selectedItemIndex","item","_a","triggerScroll","tableElement","rows","theadHeight","rowRect","tableRect","rowCenterY","tableCenterY","scrollY","_b"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iguazio.dashboard-react-controls",
3
- "version": "3.1.7",
3
+ "version": "3.1.9",
4
4
  "description": "Collection of resources (such as CSS styles, fonts and images) and ReactJS 17.x components to share among different Iguazio React repos.",
5
5
  "module": "./dist/index.mjs",
6
6
  "main": "./dist/index.mjs",