@entur/dropdown 6.0.11 → 6.0.13-RC.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1238 +1,360 @@
1
- import { mergeRefs, useDebounce, useRandomId, warnAboutMissingStyles } from '@entur/utils';
1
+ import { useDebounce, useRandomId, warnAboutMissingStyles } from '@entur/utils';
2
2
  import React, { useState, useRef, useEffect, useCallback } from 'react';
3
- import Downshift, { useSelect, useCombobox, useMultipleSelection } from 'downshift';
3
+ import { useCombobox, useMultipleSelection, useSelect } from 'downshift';
4
4
  import classNames from 'classnames';
5
- import { BaseFormControl, VariantProvider, FeedbackText, Checkbox } from '@entur/form';
6
- import { CheckIcon, DownArrowIcon, CloseSmallIcon, CloseIcon } from '@entur/icons';
7
- import { VisuallyHidden } from '@entur/a11y';
8
- import { LoadingDots } from '@entur/loader';
5
+ import { useFloating, offset, flip, autoUpdate } from '@floating-ui/react-dom';
6
+ import { Checkbox, BaseFormControl } from '@entur/form';
9
7
  import { space } from '@entur/tokens';
10
- import { useFloating, autoUpdate, offset, flip } from '@floating-ui/react-dom';
8
+ import { VisuallyHidden } from '@entur/a11y';
11
9
  import { IconButton } from '@entur/button';
12
10
  import { TagChip } from '@entur/chip';
11
+ import { CloseSmallIcon, DownArrowIcon } from '@entur/icons';
12
+ import { LoadingDots } from '@entur/loader';
13
13
  import { Tooltip } from '@entur/tooltip';
14
14
 
15
+ function asyncGeneratorStep(n, t, e, r, o, a, c) {
16
+ try {
17
+ var i = n[a](c),
18
+ u = i.value;
19
+ } catch (n) {
20
+ return void e(n);
21
+ }
22
+ i.done ? t(u) : Promise.resolve(u).then(r, o);
23
+ }
24
+ function _asyncToGenerator(n) {
25
+ return function () {
26
+ var t = this,
27
+ e = arguments;
28
+ return new Promise(function (r, o) {
29
+ var a = n.apply(t, e);
30
+ function _next(n) {
31
+ asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
32
+ }
33
+ function _throw(n) {
34
+ asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
35
+ }
36
+ _next(void 0);
37
+ });
38
+ };
39
+ }
40
+ function _extends() {
41
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
42
+ for (var e = 1; e < arguments.length; e++) {
43
+ var t = arguments[e];
44
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
45
+ }
46
+ return n;
47
+ }, _extends.apply(null, arguments);
48
+ }
49
+ function _objectWithoutPropertiesLoose(r, e) {
50
+ if (null == r) return {};
51
+ var t = {};
52
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
53
+ if (e.includes(n)) continue;
54
+ t[n] = r[n];
55
+ }
56
+ return t;
57
+ }
15
58
  function _regeneratorRuntime() {
16
59
  _regeneratorRuntime = function () {
17
- return exports;
60
+ return e;
18
61
  };
19
- var exports = {},
20
- Op = Object.prototype,
21
- hasOwn = Op.hasOwnProperty,
22
- defineProperty = Object.defineProperty || function (obj, key, desc) {
23
- obj[key] = desc.value;
62
+ var t,
63
+ e = {},
64
+ r = Object.prototype,
65
+ n = r.hasOwnProperty,
66
+ o = Object.defineProperty || function (t, e, r) {
67
+ t[e] = r.value;
24
68
  },
25
- $Symbol = "function" == typeof Symbol ? Symbol : {},
26
- iteratorSymbol = $Symbol.iterator || "@@iterator",
27
- asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
28
- toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
29
- function define(obj, key, value) {
30
- return Object.defineProperty(obj, key, {
31
- value: value,
69
+ i = "function" == typeof Symbol ? Symbol : {},
70
+ a = i.iterator || "@@iterator",
71
+ c = i.asyncIterator || "@@asyncIterator",
72
+ u = i.toStringTag || "@@toStringTag";
73
+ function define(t, e, r) {
74
+ return Object.defineProperty(t, e, {
75
+ value: r,
32
76
  enumerable: !0,
33
77
  configurable: !0,
34
78
  writable: !0
35
- }), obj[key];
79
+ }), t[e];
36
80
  }
37
81
  try {
38
82
  define({}, "");
39
- } catch (err) {
40
- define = function (obj, key, value) {
41
- return obj[key] = value;
83
+ } catch (t) {
84
+ define = function (t, e, r) {
85
+ return t[e] = r;
42
86
  };
43
87
  }
44
- function wrap(innerFn, outerFn, self, tryLocsList) {
45
- var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
46
- generator = Object.create(protoGenerator.prototype),
47
- context = new Context(tryLocsList || []);
48
- return defineProperty(generator, "_invoke", {
49
- value: makeInvokeMethod(innerFn, self, context)
50
- }), generator;
88
+ function wrap(t, e, r, n) {
89
+ var i = e && e.prototype instanceof Generator ? e : Generator,
90
+ a = Object.create(i.prototype),
91
+ c = new Context(n || []);
92
+ return o(a, "_invoke", {
93
+ value: makeInvokeMethod(t, r, c)
94
+ }), a;
51
95
  }
52
- function tryCatch(fn, obj, arg) {
96
+ function tryCatch(t, e, r) {
53
97
  try {
54
98
  return {
55
99
  type: "normal",
56
- arg: fn.call(obj, arg)
100
+ arg: t.call(e, r)
57
101
  };
58
- } catch (err) {
102
+ } catch (t) {
59
103
  return {
60
104
  type: "throw",
61
- arg: err
105
+ arg: t
62
106
  };
63
107
  }
64
108
  }
65
- exports.wrap = wrap;
66
- var ContinueSentinel = {};
109
+ e.wrap = wrap;
110
+ var h = "suspendedStart",
111
+ l = "suspendedYield",
112
+ f = "executing",
113
+ s = "completed",
114
+ y = {};
67
115
  function Generator() {}
68
116
  function GeneratorFunction() {}
69
117
  function GeneratorFunctionPrototype() {}
70
- var IteratorPrototype = {};
71
- define(IteratorPrototype, iteratorSymbol, function () {
118
+ var p = {};
119
+ define(p, a, function () {
72
120
  return this;
73
121
  });
74
- var getProto = Object.getPrototypeOf,
75
- NativeIteratorPrototype = getProto && getProto(getProto(values([])));
76
- NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
77
- var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
78
- function defineIteratorMethods(prototype) {
79
- ["next", "throw", "return"].forEach(function (method) {
80
- define(prototype, method, function (arg) {
81
- return this._invoke(method, arg);
122
+ var d = Object.getPrototypeOf,
123
+ v = d && d(d(values([])));
124
+ v && v !== r && n.call(v, a) && (p = v);
125
+ var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
126
+ function defineIteratorMethods(t) {
127
+ ["next", "throw", "return"].forEach(function (e) {
128
+ define(t, e, function (t) {
129
+ return this._invoke(e, t);
82
130
  });
83
131
  });
84
132
  }
85
- function AsyncIterator(generator, PromiseImpl) {
86
- function invoke(method, arg, resolve, reject) {
87
- var record = tryCatch(generator[method], generator, arg);
88
- if ("throw" !== record.type) {
89
- var result = record.arg,
90
- value = result.value;
91
- return value && "object" == typeof value && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
92
- invoke("next", value, resolve, reject);
93
- }, function (err) {
94
- invoke("throw", err, resolve, reject);
95
- }) : PromiseImpl.resolve(value).then(function (unwrapped) {
96
- result.value = unwrapped, resolve(result);
97
- }, function (error) {
98
- return invoke("throw", error, resolve, reject);
133
+ function AsyncIterator(t, e) {
134
+ function invoke(r, o, i, a) {
135
+ var c = tryCatch(t[r], t, o);
136
+ if ("throw" !== c.type) {
137
+ var u = c.arg,
138
+ h = u.value;
139
+ return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
140
+ invoke("next", t, i, a);
141
+ }, function (t) {
142
+ invoke("throw", t, i, a);
143
+ }) : e.resolve(h).then(function (t) {
144
+ u.value = t, i(u);
145
+ }, function (t) {
146
+ return invoke("throw", t, i, a);
99
147
  });
100
148
  }
101
- reject(record.arg);
149
+ a(c.arg);
102
150
  }
103
- var previousPromise;
104
- defineProperty(this, "_invoke", {
105
- value: function (method, arg) {
151
+ var r;
152
+ o(this, "_invoke", {
153
+ value: function (t, n) {
106
154
  function callInvokeWithMethodAndArg() {
107
- return new PromiseImpl(function (resolve, reject) {
108
- invoke(method, arg, resolve, reject);
155
+ return new e(function (e, r) {
156
+ invoke(t, n, e, r);
109
157
  });
110
158
  }
111
- return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
159
+ return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
112
160
  }
113
161
  });
114
162
  }
115
- function makeInvokeMethod(innerFn, self, context) {
116
- var state = "suspendedStart";
117
- return function (method, arg) {
118
- if ("executing" === state) throw new Error("Generator is already running");
119
- if ("completed" === state) {
120
- if ("throw" === method) throw arg;
121
- return doneResult();
163
+ function makeInvokeMethod(e, r, n) {
164
+ var o = h;
165
+ return function (i, a) {
166
+ if (o === f) throw Error("Generator is already running");
167
+ if (o === s) {
168
+ if ("throw" === i) throw a;
169
+ return {
170
+ value: t,
171
+ done: !0
172
+ };
122
173
  }
123
- for (context.method = method, context.arg = arg;;) {
124
- var delegate = context.delegate;
125
- if (delegate) {
126
- var delegateResult = maybeInvokeDelegate(delegate, context);
127
- if (delegateResult) {
128
- if (delegateResult === ContinueSentinel) continue;
129
- return delegateResult;
174
+ for (n.method = i, n.arg = a;;) {
175
+ var c = n.delegate;
176
+ if (c) {
177
+ var u = maybeInvokeDelegate(c, n);
178
+ if (u) {
179
+ if (u === y) continue;
180
+ return u;
130
181
  }
131
182
  }
132
- if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
133
- if ("suspendedStart" === state) throw state = "completed", context.arg;
134
- context.dispatchException(context.arg);
135
- } else "return" === context.method && context.abrupt("return", context.arg);
136
- state = "executing";
137
- var record = tryCatch(innerFn, self, context);
138
- if ("normal" === record.type) {
139
- if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
183
+ if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
184
+ if (o === h) throw o = s, n.arg;
185
+ n.dispatchException(n.arg);
186
+ } else "return" === n.method && n.abrupt("return", n.arg);
187
+ o = f;
188
+ var p = tryCatch(e, r, n);
189
+ if ("normal" === p.type) {
190
+ if (o = n.done ? s : l, p.arg === y) continue;
140
191
  return {
141
- value: record.arg,
142
- done: context.done
192
+ value: p.arg,
193
+ done: n.done
143
194
  };
144
195
  }
145
- "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
196
+ "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
146
197
  }
147
198
  };
148
199
  }
149
- function maybeInvokeDelegate(delegate, context) {
150
- var methodName = context.method,
151
- method = delegate.iterator[methodName];
152
- if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel;
153
- var record = tryCatch(method, delegate.iterator, context.arg);
154
- if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
155
- var info = record.arg;
156
- return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
200
+ function maybeInvokeDelegate(e, r) {
201
+ var n = r.method,
202
+ o = e.iterator[n];
203
+ if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
204
+ var i = tryCatch(o, e.iterator, r.arg);
205
+ if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
206
+ var a = i.arg;
207
+ return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
157
208
  }
158
- function pushTryEntry(locs) {
159
- var entry = {
160
- tryLoc: locs[0]
209
+ function pushTryEntry(t) {
210
+ var e = {
211
+ tryLoc: t[0]
161
212
  };
162
- 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
213
+ 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
163
214
  }
164
- function resetTryEntry(entry) {
165
- var record = entry.completion || {};
166
- record.type = "normal", delete record.arg, entry.completion = record;
215
+ function resetTryEntry(t) {
216
+ var e = t.completion || {};
217
+ e.type = "normal", delete e.arg, t.completion = e;
167
218
  }
168
- function Context(tryLocsList) {
219
+ function Context(t) {
169
220
  this.tryEntries = [{
170
221
  tryLoc: "root"
171
- }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
222
+ }], t.forEach(pushTryEntry, this), this.reset(!0);
172
223
  }
173
- function values(iterable) {
174
- if (iterable) {
175
- var iteratorMethod = iterable[iteratorSymbol];
176
- if (iteratorMethod) return iteratorMethod.call(iterable);
177
- if ("function" == typeof iterable.next) return iterable;
178
- if (!isNaN(iterable.length)) {
179
- var i = -1,
180
- next = function next() {
181
- for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
182
- return next.value = undefined, next.done = !0, next;
224
+ function values(e) {
225
+ if (e || "" === e) {
226
+ var r = e[a];
227
+ if (r) return r.call(e);
228
+ if ("function" == typeof e.next) return e;
229
+ if (!isNaN(e.length)) {
230
+ var o = -1,
231
+ i = function next() {
232
+ for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
233
+ return next.value = t, next.done = !0, next;
183
234
  };
184
- return next.next = next;
235
+ return i.next = i;
185
236
  }
186
237
  }
187
- return {
188
- next: doneResult
189
- };
238
+ throw new TypeError(typeof e + " is not iterable");
190
239
  }
191
- function doneResult() {
192
- return {
193
- value: undefined,
194
- done: !0
195
- };
196
- }
197
- return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", {
240
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
198
241
  value: GeneratorFunctionPrototype,
199
242
  configurable: !0
200
- }), defineProperty(GeneratorFunctionPrototype, "constructor", {
243
+ }), o(GeneratorFunctionPrototype, "constructor", {
201
244
  value: GeneratorFunction,
202
245
  configurable: !0
203
- }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
204
- var ctor = "function" == typeof genFun && genFun.constructor;
205
- return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
206
- }, exports.mark = function (genFun) {
207
- return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
208
- }, exports.awrap = function (arg) {
246
+ }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
247
+ var e = "function" == typeof t && t.constructor;
248
+ return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
249
+ }, e.mark = function (t) {
250
+ return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
251
+ }, e.awrap = function (t) {
209
252
  return {
210
- __await: arg
253
+ __await: t
211
254
  };
212
- }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
255
+ }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
213
256
  return this;
214
- }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
215
- void 0 === PromiseImpl && (PromiseImpl = Promise);
216
- var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
217
- return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
218
- return result.done ? result.value : iter.next();
257
+ }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
258
+ void 0 === i && (i = Promise);
259
+ var a = new AsyncIterator(wrap(t, r, n, o), i);
260
+ return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
261
+ return t.done ? t.value : a.next();
219
262
  });
220
- }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
263
+ }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
221
264
  return this;
222
- }), define(Gp, "toString", function () {
265
+ }), define(g, "toString", function () {
223
266
  return "[object Generator]";
224
- }), exports.keys = function (val) {
225
- var object = Object(val),
226
- keys = [];
227
- for (var key in object) keys.push(key);
228
- return keys.reverse(), function next() {
229
- for (; keys.length;) {
230
- var key = keys.pop();
231
- if (key in object) return next.value = key, next.done = !1, next;
267
+ }), e.keys = function (t) {
268
+ var e = Object(t),
269
+ r = [];
270
+ for (var n in e) r.push(n);
271
+ return r.reverse(), function next() {
272
+ for (; r.length;) {
273
+ var t = r.pop();
274
+ if (t in e) return next.value = t, next.done = !1, next;
232
275
  }
233
276
  return next.done = !0, next;
234
277
  };
235
- }, exports.values = values, Context.prototype = {
278
+ }, e.values = values, Context.prototype = {
236
279
  constructor: Context,
237
- reset: function (skipTempReset) {
238
- if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
280
+ reset: function (e) {
281
+ if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
239
282
  },
240
283
  stop: function () {
241
284
  this.done = !0;
242
- var rootRecord = this.tryEntries[0].completion;
243
- if ("throw" === rootRecord.type) throw rootRecord.arg;
285
+ var t = this.tryEntries[0].completion;
286
+ if ("throw" === t.type) throw t.arg;
244
287
  return this.rval;
245
288
  },
246
- dispatchException: function (exception) {
247
- if (this.done) throw exception;
248
- var context = this;
249
- function handle(loc, caught) {
250
- return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
289
+ dispatchException: function (e) {
290
+ if (this.done) throw e;
291
+ var r = this;
292
+ function handle(n, o) {
293
+ return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
251
294
  }
252
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
253
- var entry = this.tryEntries[i],
254
- record = entry.completion;
255
- if ("root" === entry.tryLoc) return handle("end");
256
- if (entry.tryLoc <= this.prev) {
257
- var hasCatch = hasOwn.call(entry, "catchLoc"),
258
- hasFinally = hasOwn.call(entry, "finallyLoc");
259
- if (hasCatch && hasFinally) {
260
- if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
261
- if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
262
- } else if (hasCatch) {
263
- if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
295
+ for (var o = this.tryEntries.length - 1; o >= 0; --o) {
296
+ var i = this.tryEntries[o],
297
+ a = i.completion;
298
+ if ("root" === i.tryLoc) return handle("end");
299
+ if (i.tryLoc <= this.prev) {
300
+ var c = n.call(i, "catchLoc"),
301
+ u = n.call(i, "finallyLoc");
302
+ if (c && u) {
303
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
304
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
305
+ } else if (c) {
306
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
264
307
  } else {
265
- if (!hasFinally) throw new Error("try statement without catch or finally");
266
- if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
308
+ if (!u) throw Error("try statement without catch or finally");
309
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
267
310
  }
268
311
  }
269
312
  }
270
313
  },
271
- abrupt: function (type, arg) {
272
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
273
- var entry = this.tryEntries[i];
274
- if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
275
- var finallyEntry = entry;
314
+ abrupt: function (t, e) {
315
+ for (var r = this.tryEntries.length - 1; r >= 0; --r) {
316
+ var o = this.tryEntries[r];
317
+ if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
318
+ var i = o;
276
319
  break;
277
320
  }
278
321
  }
279
- finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
280
- var record = finallyEntry ? finallyEntry.completion : {};
281
- return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
322
+ i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
323
+ var a = i ? i.completion : {};
324
+ return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
282
325
  },
283
- complete: function (record, afterLoc) {
284
- if ("throw" === record.type) throw record.arg;
285
- return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
326
+ complete: function (t, e) {
327
+ if ("throw" === t.type) throw t.arg;
328
+ return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
286
329
  },
287
- finish: function (finallyLoc) {
288
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
289
- var entry = this.tryEntries[i];
290
- if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
330
+ finish: function (t) {
331
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
332
+ var r = this.tryEntries[e];
333
+ if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
291
334
  }
292
335
  },
293
- catch: function (tryLoc) {
294
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
295
- var entry = this.tryEntries[i];
296
- if (entry.tryLoc === tryLoc) {
297
- var record = entry.completion;
298
- if ("throw" === record.type) {
299
- var thrown = record.arg;
300
- resetTryEntry(entry);
336
+ catch: function (t) {
337
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
338
+ var r = this.tryEntries[e];
339
+ if (r.tryLoc === t) {
340
+ var n = r.completion;
341
+ if ("throw" === n.type) {
342
+ var o = n.arg;
343
+ resetTryEntry(r);
301
344
  }
302
- return thrown;
345
+ return o;
303
346
  }
304
347
  }
305
- throw new Error("illegal catch attempt");
348
+ throw Error("illegal catch attempt");
306
349
  },
307
- delegateYield: function (iterable, resultName, nextLoc) {
350
+ delegateYield: function (e, r, n) {
308
351
  return this.delegate = {
309
- iterator: values(iterable),
310
- resultName: resultName,
311
- nextLoc: nextLoc
312
- }, "next" === this.method && (this.arg = undefined), ContinueSentinel;
313
- }
314
- }, exports;
315
- }
316
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
317
- try {
318
- var info = gen[key](arg);
319
- var value = info.value;
320
- } catch (error) {
321
- reject(error);
322
- return;
323
- }
324
- if (info.done) {
325
- resolve(value);
326
- } else {
327
- Promise.resolve(value).then(_next, _throw);
328
- }
329
- }
330
- function _asyncToGenerator(fn) {
331
- return function () {
332
- var self = this,
333
- args = arguments;
334
- return new Promise(function (resolve, reject) {
335
- var gen = fn.apply(self, args);
336
- function _next(value) {
337
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
338
- }
339
- function _throw(err) {
340
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
341
- }
342
- _next(undefined);
343
- });
344
- };
345
- }
346
- function _extends() {
347
- _extends = Object.assign ? Object.assign.bind() : function (target) {
348
- for (var i = 1; i < arguments.length; i++) {
349
- var source = arguments[i];
350
- for (var key in source) {
351
- if (Object.prototype.hasOwnProperty.call(source, key)) {
352
- target[key] = source[key];
353
- }
354
- }
355
- }
356
- return target;
357
- };
358
- return _extends.apply(this, arguments);
359
- }
360
- function _objectDestructuringEmpty(obj) {
361
- if (obj == null) throw new TypeError("Cannot destructure " + obj);
362
- }
363
- function _objectWithoutPropertiesLoose(source, excluded) {
364
- if (source == null) return {};
365
- var target = {};
366
- var sourceKeys = Object.keys(source);
367
- var key, i;
368
- for (i = 0; i < sourceKeys.length; i++) {
369
- key = sourceKeys[i];
370
- if (excluded.indexOf(key) >= 0) continue;
371
- target[key] = source[key];
372
- }
373
- return target;
374
- }
375
-
376
- var _excluded$d = ["children", "onChange", "onInputValueChange", "highlightFirstItemOnOpen", "className", "style", "searchable"];
377
- var DownshiftContext = /*#__PURE__*/React.createContext(null);
378
- var DownshiftProvider = function DownshiftProvider(_ref) {
379
- var children = _ref.children,
380
- _ref$onChange = _ref.onChange,
381
- onChange = _ref$onChange === void 0 ? function () {
382
- return undefined;
383
- } : _ref$onChange,
384
- _ref$onInputValueChan = _ref.onInputValueChange,
385
- onInputValueChange = _ref$onInputValueChan === void 0 ? function () {
386
- return undefined;
387
- } : _ref$onInputValueChan,
388
- _ref$highlightFirstIt = _ref.highlightFirstItemOnOpen,
389
- highlightFirstItemOnOpen = _ref$highlightFirstIt === void 0 ? false : _ref$highlightFirstIt,
390
- className = _ref.className,
391
- style = _ref.style,
392
- _ref$searchable = _ref.searchable,
393
- searchable = _ref$searchable === void 0 ? false : _ref$searchable,
394
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$d);
395
- var handleStateChange = function handleStateChange(changes, stateAndHelpers) {
396
- if (changes.type === Downshift.stateChangeTypes.controlledPropUpdatedSelectedItem) {
397
- return;
398
- }
399
- if ('selectedItem' in changes) {
400
- onChange(changes.selectedItem, stateAndHelpers);
401
- } else if ('inputValue' in changes) {
402
- onInputValueChange(changes.inputValue);
403
- }
404
- };
405
- var stateReducer = function stateReducer(_, changes) {
406
- var highlightFirstOnOpen = highlightFirstItemOnOpen && 'isOpen' in changes && changes.isOpen;
407
- var highlightFirstItemIndex = highlightFirstOnOpen ? {
408
- highlightedIndex: 0
409
- } : {};
410
- if (searchable) {
411
- var type = changes.type;
412
- switch (type) {
413
- case '__autocomplete_change_input__':
414
- return _extends({}, changes, highlightFirstItemIndex);
415
- case '__autocomplete_click_item__':
416
- case '__autocomplete_keydown_enter__':
417
- case '__autocomplete_blur_input__':
418
- case '__autocomplete_mouseup__':
419
- return _extends({}, changes, {
420
- // if we had an item highlighted in the previous state.
421
- // we will reset input field value to blank
422
- inputValue: ''
423
- }, highlightFirstItemIndex);
424
- default:
425
- return _extends({}, changes, highlightFirstItemIndex);
426
- }
427
- } else {
428
- return _extends({}, changes, highlightFirstItemIndex);
429
- }
430
- };
431
- return React.createElement(Downshift, _extends({
432
- itemToString: function itemToString(item) {
433
- return item ? item.label : '';
434
- },
435
- onStateChange: handleStateChange,
436
- stateReducer: stateReducer
437
- }, rest), function (args) {
438
- return React.createElement("div", {
439
- className: classNames('eds-input-group', className),
440
- style: style
441
- }, React.createElement(DownshiftContext.Provider, {
442
- value: args
443
- }, children));
444
- });
445
- };
446
- var useDownshift = function useDownshift() {
447
- var context = React.useContext(DownshiftContext);
448
- if (!context) {
449
- throw new Error('You need to wrap your component in a DownshiftProvider');
450
- }
451
- return context;
452
- };
453
-
454
- var _excluded$c = ["items"];
455
- var DropdownListDeprecated = function DropdownListDeprecated(_ref) {
456
- var items = _ref.items,
457
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$c);
458
- var _useDownshift = useDownshift(),
459
- highlightedIndex = _useDownshift.highlightedIndex,
460
- isOpen = _useDownshift.isOpen,
461
- selectedItem = _useDownshift.selectedItem,
462
- getItemProps = _useDownshift.getItemProps,
463
- getMenuProps = _useDownshift.getMenuProps;
464
- return React.createElement("ul", _extends({
465
- className: classNames('eds-dropdown-list', {
466
- 'eds-dropdown-list--open': isOpen
467
- })
468
- }, getMenuProps(), rest), isOpen ? items.map(function (item, index) {
469
- return (
470
- // eslint-disable-next-line react/jsx-key
471
- React.createElement("li", _extends({
472
- className: classNames('eds-dropdown-list__item', {
473
- 'eds-dropdown-list__item--highlighted': highlightedIndex === index,
474
- 'eds-dropdown-list__item--selected': selectedItem === item
475
- })
476
- }, getItemProps({
477
- key: "" + index + item.value,
478
- item: item,
479
- index: index
480
- })), React.createElement("span", null, item.label), item.icons && React.createElement("span", null, item.icons.map(function (Icon, index) {
481
- return React.createElement(Icon, {
482
- key: index,
483
- inline: true,
484
- className: "eds-dropdown-list__item-icon"
485
- });
486
- })), selectedItem === item && React.createElement(CheckIcon, null))
487
- );
488
- }) : null);
489
- };
490
-
491
- var DropdownDeprecatedToggleButton = function DropdownDeprecatedToggleButton() {
492
- var _useDownshift = useDownshift(),
493
- getToggleButtonProps = _useDownshift.getToggleButtonProps,
494
- isOpen = _useDownshift.isOpen;
495
- return React.createElement("button", _extends({}, getToggleButtonProps({
496
- className: classNames('eds-dropdown__toggle-button', {
497
- 'eds-dropdown__toggle-button--open': isOpen
498
- })
499
- }), {
500
- tabIndex: -1,
501
- type: "button"
502
- }), React.createElement(DownArrowIcon, null));
503
- };
504
-
505
- var _excluded$b = ["className", "children"];
506
- var DropdownDeprecatedLoadingDots = function DropdownDeprecatedLoadingDots(_ref) {
507
- var className = _ref.className,
508
- children = _ref.children,
509
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$b);
510
- return React.createElement("div", _extends({
511
- className: classNames('eds-inline-spinner', className)
512
- }, rest), React.createElement(LoadingDots, null), React.createElement(VisuallyHidden, null, children));
513
- };
514
-
515
- var _excluded$a = ["children", "className", "items", "loading", "loadingText", "placeholder", "style", "listStyle", "clearable", "label", "isFilled", "disableLabelAnimation"];
516
- var BaseDropdownDeprecated = function BaseDropdownDeprecated(_ref) {
517
- var children = _ref.children,
518
- className = _ref.className,
519
- items = _ref.items,
520
- _ref$loading = _ref.loading,
521
- loading = _ref$loading === void 0 ? false : _ref$loading,
522
- _ref$loadingText = _ref.loadingText,
523
- loadingText = _ref$loadingText === void 0 ? 'Loading...' : _ref$loadingText,
524
- style = _ref.style,
525
- listStyle = _ref.listStyle,
526
- clearable = _ref.clearable,
527
- label = _ref.label,
528
- _ref$isFilled = _ref.isFilled,
529
- isFilled = _ref$isFilled === void 0 ? false : _ref$isFilled,
530
- disableLabelAnimation = _ref.disableLabelAnimation,
531
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
532
- var _useDownshift = useDownshift(),
533
- getLabelProps = _useDownshift.getLabelProps;
534
- return React.createElement("div", {
535
- className: "eds-dropdown-wrapper",
536
- style: style
537
- }, React.createElement(BaseFormControl, _extends({
538
- append: React.createElement(Appendix$1, {
539
- clearable: clearable,
540
- loading: loading,
541
- loadingText: loadingText,
542
- readOnly: rest.readOnly
543
- }),
544
- className: className,
545
- label: label,
546
- isFilled: isFilled,
547
- labelProps: getLabelProps(),
548
- disableLabelAnimation: disableLabelAnimation
549
- }, rest), children), React.createElement(DropdownListDeprecated, _extends({
550
- items: items,
551
- style: _extends({
552
- position: 'absolute',
553
- top: space.extraLarge3 + space.extraSmall + "px"
554
- }, listStyle)
555
- }, rest)));
556
- };
557
- var ClearButton$1 = function ClearButton(_ref2) {
558
- var props = _extends({}, (_objectDestructuringEmpty(_ref2), _ref2));
559
- var _useDownshift2 = useDownshift(),
560
- clearSelection = _useDownshift2.clearSelection,
561
- selectedItem = _useDownshift2.selectedItem;
562
- return React.createElement(React.Fragment, null, selectedItem && React.createElement("button", _extends({
563
- className: "eds-dropdown__clear-button",
564
- type: "button",
565
- tabIndex: -1,
566
- onClick: function onClick() {
567
- return clearSelection();
568
- },
569
- "aria-label": "Trykk for \xE5 fjerne valg"
570
- }, props), React.createElement(CloseSmallIcon, null)), selectedItem && React.createElement("div", {
571
- className: "eds-dropdown__divider"
572
- }));
573
- };
574
- var Appendix$1 = function Appendix(_ref3) {
575
- var clearable = _ref3.clearable,
576
- loading = _ref3.loading,
577
- loadingText = _ref3.loadingText,
578
- readOnly = _ref3.readOnly;
579
- if (loading) {
580
- return React.createElement(DropdownDeprecatedLoadingDots, null, loadingText);
581
- }
582
- if (readOnly) {
583
- return null;
584
- }
585
- return clearable ? React.createElement(React.Fragment, null, React.createElement(ClearButton$1, null), " ", React.createElement(DropdownDeprecatedToggleButton, null)) : React.createElement(DropdownDeprecatedToggleButton, null);
586
- };
587
-
588
- var _excluded$9 = ["disabled", "placeholder", "selectOnTab", "openOnFocus", "listStyle", "items", "label", "disableLabelAnimation", "loading", "loadingText", "className", "clearable"];
589
- var RegularDropdownDeprecated = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
590
- var disabled = _ref.disabled,
591
- _ref$placeholder = _ref.placeholder,
592
- placeholder = _ref$placeholder === void 0 ? 'Vennligst velg' : _ref$placeholder,
593
- _ref$selectOnTab = _ref.selectOnTab,
594
- selectOnTab = _ref$selectOnTab === void 0 ? false : _ref$selectOnTab,
595
- _ref$openOnFocus = _ref.openOnFocus,
596
- openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
597
- listStyle = _ref.listStyle,
598
- items = _ref.items,
599
- label = _ref.label,
600
- disableLabelAnimation = _ref.disableLabelAnimation,
601
- loading = _ref.loading,
602
- loadingText = _ref.loadingText,
603
- className = _ref.className,
604
- clearable = _ref.clearable,
605
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$9);
606
- var _useDownshift = useDownshift(),
607
- getToggleButtonProps = _useDownshift.getToggleButtonProps,
608
- selectedItem = _useDownshift.selectedItem,
609
- selectHighlightedItem = _useDownshift.selectHighlightedItem,
610
- openMenu = _useDownshift.openMenu,
611
- isOpen = _useDownshift.isOpen,
612
- highlightedIndex = _useDownshift.highlightedIndex,
613
- setHighlightedIndex = _useDownshift.setHighlightedIndex;
614
- return React.createElement(BaseDropdownDeprecated, _extends({
615
- disabled: disabled,
616
- listStyle: listStyle,
617
- items: items,
618
- label: label,
619
- isFilled: selectedItem ? true : placeholder.length !== 0,
620
- disableLabelAnimation: disableLabelAnimation,
621
- loading: loading,
622
- loadingText: loadingText,
623
- className: className,
624
- clearable: clearable
625
- }, rest), React.createElement("button", _extends({}, getToggleButtonProps(_extends({
626
- className: 'eds-form-control eds-dropdown__selected-item',
627
- style: {
628
- textAlign: 'left'
629
- },
630
- disabled: disabled,
631
- type: 'button',
632
- onKeyDown: function onKeyDown(e) {
633
- if (selectOnTab && e.key === 'Tab') {
634
- selectHighlightedItem();
635
- }
636
- if (isOpen) {
637
- var keyDownValue = e.key;
638
- var matchedItems = items.map(function (item, index) {
639
- return _extends({}, item, {
640
- index: index
641
- });
642
- }).filter(function (item) {
643
- var firstCharacter = item.label.trim().charAt(0).toLowerCase();
644
- return firstCharacter === keyDownValue;
645
- });
646
- var nextHighlightItem = matchedItems.find(function (item) {
647
- return item.index > (highlightedIndex != null ? highlightedIndex : 0);
648
- });
649
- if (nextHighlightItem) {
650
- setHighlightedIndex(nextHighlightItem.index);
651
- } else if (matchedItems.length > 0) {
652
- setHighlightedIndex(matchedItems[0].index);
653
- }
654
- }
655
- },
656
- onFocus: function onFocus() {
657
- if (openOnFocus) {
658
- !isOpen && openMenu();
659
- }
660
- }
661
- }, rest)), {
662
- ref: ref
663
- }), selectedItem ? selectedItem.label : placeholder));
664
- });
665
-
666
- var _excluded$8 = ["disabled", "className", "items", "loading", "loadingText", "readOnly", "prepend", "selectOnTab", "openOnFocus", "listStyle", "clearable", "itemFilter", "label", "disableLabelAnimation", "placeholder"];
667
- function LowerCaseFilterTest(item, input) {
668
- if (!input) {
669
- return true;
670
- }
671
- var sanitizeEscapeCharacters = input.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
672
- var inputRegex = new RegExp(sanitizeEscapeCharacters, 'i');
673
- return inputRegex.test(item.label);
674
- }
675
- /**
676
- * @deprecated
677
- * New SearchableDropdown available
678
- *
679
- * migration guide to new dropdown:
680
- * - change import from 'DropdownDeprecated' to 'Dropdown'
681
- * - change from 'value' to 'selectedItem'
682
- * + type of 'selectedItem' is 'NormalizedDropdownType' and does not include 'string'
683
- * - 'onChange' must update value of 'selectedItem'
684
- */
685
- var SearchableDropdownDeprecated = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
686
- var _ref$disabled = _ref.disabled,
687
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
688
- className = _ref.className,
689
- items = _ref.items,
690
- loading = _ref.loading,
691
- loadingText = _ref.loadingText,
692
- _ref$readOnly = _ref.readOnly,
693
- readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
694
- prepend = _ref.prepend,
695
- _ref$selectOnTab = _ref.selectOnTab,
696
- selectOnTab = _ref$selectOnTab === void 0 ? false : _ref$selectOnTab,
697
- _ref$openOnFocus = _ref.openOnFocus,
698
- openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
699
- listStyle = _ref.listStyle,
700
- clearable = _ref.clearable,
701
- _ref$itemFilter = _ref.itemFilter,
702
- itemFilter = _ref$itemFilter === void 0 ? function (item, inputValue) {
703
- return LowerCaseFilterTest(item, inputValue);
704
- } : _ref$itemFilter,
705
- label = _ref.label,
706
- disableLabelAnimation = _ref.disableLabelAnimation,
707
- placeholder = _ref.placeholder,
708
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
709
- var _useDownshift = useDownshift(),
710
- getInputProps = _useDownshift.getInputProps,
711
- inputValue = _useDownshift.inputValue,
712
- selectHighlightedItem = _useDownshift.selectHighlightedItem,
713
- isOpen = _useDownshift.isOpen,
714
- openMenu = _useDownshift.openMenu,
715
- closeMenu = _useDownshift.closeMenu,
716
- selectedItem = _useDownshift.selectedItem;
717
- var _useState = useState(false),
718
- hideSelectedItem = _useState[0],
719
- setHideSelectedItem = _useState[1];
720
- var inputRef = useRef(null);
721
- var filteredItems = React.useMemo(function () {
722
- return items.filter(function (item) {
723
- return itemFilter(item, inputValue);
724
- });
725
- }, [inputValue, items, itemFilter]);
726
- return React.createElement(BaseDropdownDeprecated, {
727
- items: filteredItems,
728
- disabled: disabled,
729
- readOnly: readOnly,
730
- className: className,
731
- loading: loading,
732
- loadingText: loadingText,
733
- prepend: prepend,
734
- listStyle: listStyle,
735
- clearable: clearable,
736
- label: label,
737
- isFilled: selectedItem ? true : false,
738
- disableLabelAnimation: disableLabelAnimation
739
- }, !hideSelectedItem && selectedItem && !inputValue && React.createElement("span", {
740
- className: "eds-dropdown__searchable-selected-item__wrapper"
741
- }, React.createElement("span", {
742
- className: "eds-dropdown__searchable-selected-item",
743
- onClick: function onClick() {
744
- var _inputRef$current;
745
- return (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
746
- }
747
- }, selectedItem.label)), React.createElement("input", _extends({}, getInputProps(_extends({
748
- disabled: disabled,
749
- readOnly: readOnly,
750
- className: 'eds-form-control eds-dropdown__input',
751
- onKeyDown: function onKeyDown(e) {
752
- if (selectOnTab && e.key === 'Tab') selectHighlightedItem();
753
- },
754
- onFocus: function onFocus() {
755
- if (!isOpen && openOnFocus) openMenu();
756
- setHideSelectedItem(true);
757
- },
758
- placeholder: selectedItem ? selectedItem.label : placeholder
759
- }, rest)), {
760
- onBlur: function onBlur() {
761
- setHideSelectedItem(false);
762
- closeMenu();
763
- },
764
- ref: mergeRefs(ref, inputRef)
765
- })));
766
- });
767
-
768
- var DropdownInputGroupDeprecated = function DropdownInputGroupDeprecated(_ref) {
769
- var children = _ref.children,
770
- feedback = _ref.feedback,
771
- variant = _ref.variant,
772
- className = _ref.className,
773
- style = _ref.style;
774
- return React.createElement(VariantProvider, {
775
- variant: variant
776
- }, React.createElement("div", {
777
- className: className,
778
- style: style
779
- }, children, feedback && variant && React.createElement(FeedbackText, {
780
- variant: variant
781
- }, feedback)));
782
- };
783
-
784
- var useNormalizedItems = function useNormalizedItems(items) {
785
- return React.useMemo(function () {
786
- return items.map(function (item) {
787
- if (typeof item == 'string') {
788
- return {
789
- value: item,
790
- label: item
791
- };
792
- }
793
- if ((item == null ? void 0 : item.value) === undefined) {
794
- return _extends({}, item, {
795
- value: item.label
796
- });
797
- }
798
- return _extends({}, item, {
799
- value: item.value
800
- });
801
- });
802
- }, [items]);
803
- };
804
-
805
- var useResolvedItems = function useResolvedItems( /** The list of items, or an async function that resolves the list of items */
806
- itemsOrItemsResolver, /** The time to wait after the input changes to the fetchItems method is called */
807
- debounceTimeout) {
808
- if (debounceTimeout === void 0) {
809
- debounceTimeout = 250;
810
- }
811
- var itemsIsAFunction = typeof itemsOrItemsResolver === 'function';
812
- var _React$useState = React.useState(itemsIsAFunction ? [] : itemsOrItemsResolver),
813
- items = _React$useState[0],
814
- setItems = _React$useState[1];
815
- var _React$useState2 = React.useState(false),
816
- loading = _React$useState2[0],
817
- setLoading = _React$useState2[1];
818
- var abortControllerRef = React.useRef(new AbortController());
819
- // We normalize the itemsResolver argument to an async function, so we
820
- // can use it without thinking about the differences later
821
- var itemsResolver = React.useMemo(function () {
822
- if (itemsIsAFunction) return itemsOrItemsResolver;
823
- return function () {
824
- return Promise.resolve(itemsOrItemsResolver);
825
- };
826
- }, [itemsOrItemsResolver, itemsIsAFunction]);
827
- // This should be called whenever the input value changes
828
- var updateItems = /*#__PURE__*/function () {
829
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(inputValue) {
830
- var _abortControllerRef$c;
831
- var abortController, _abortControllerRef$c2, _abortControllerRef$c3, resolvedItems;
832
- return _regeneratorRuntime().wrap(function _callee$(_context) {
833
- while (1) {
834
- switch (_context.prev = _context.next) {
835
- case 0:
836
- // The abortController handles cleanup of the previous request and unmounting
837
- if (abortControllerRef != null && abortControllerRef.current) abortControllerRef == null ? void 0 : (_abortControllerRef$c = abortControllerRef.current) == null ? void 0 : _abortControllerRef$c.abort();
838
- abortController = new AbortController();
839
- abortControllerRef.current = abortController;
840
- setLoading(true);
841
- _context.prev = 4;
842
- _context.next = 7;
843
- return itemsResolver(inputValue != null ? inputValue : '', abortControllerRef);
844
- case 7:
845
- resolvedItems = _context.sent;
846
- if (!(abortControllerRef != null && (_abortControllerRef$c2 = abortControllerRef.current) != null && (_abortControllerRef$c3 = _abortControllerRef$c2.signal) != null && _abortControllerRef$c3.aborted)) {
847
- _context.next = 11;
848
- break;
849
- }
850
- console.warn('Avbryt den asynkrone funksjonen din med signalet fra AbortController-en for å for å unngå minnelekkasje.', 'Funksjonen bør kaste en DOMException med navnet "AbortError" når den avbrytes.', '', '\n\nSe eksempel her: https://design.entur.no/komponenter/skjemaelementer/dropdown#s%C3%B8kbar-dropdown-med-valg-fra-nettverkskall-bassert-p%C3%A5-tekstinput', '\nLes mer om AbortController her: https://developer.mozilla.org/en-US/docs/Web/API/AbortController');
851
- return _context.abrupt("return");
852
- case 11:
853
- setLoading(false);
854
- setItems(resolvedItems);
855
- _context.next = 21;
856
- break;
857
- case 15:
858
- _context.prev = 15;
859
- _context.t0 = _context["catch"](4);
860
- if (!(_context.t0 && typeof _context.t0 === 'object' && 'name' in _context.t0 && _context.t0.name === 'AbortError')) {
861
- _context.next = 19;
862
- break;
863
- }
864
- return _context.abrupt("return");
865
- case 19:
866
- console.warn('The following error was received but not handled inside Entur Designsystems useResolvedItems hook:');
867
- throw _context.t0;
868
- case 21:
869
- case "end":
870
- return _context.stop();
871
- }
872
- }
873
- }, _callee, null, [[4, 15]]);
874
- }));
875
- return function updateItems(_x) {
876
- return _ref.apply(this, arguments);
877
- };
878
- }();
879
- var debouncedFetchItems = useDebounce(updateItems, debounceTimeout);
880
- var normalizedItems = useNormalizedItems(items);
881
- React.useEffect(function () {
882
- // send abort signal to previous request on unmount for cleanup
883
- return function () {
884
- var _abortControllerRef$c4;
885
- return abortControllerRef == null ? void 0 : (_abortControllerRef$c4 = abortControllerRef.current) == null ? void 0 : _abortControllerRef$c4.abort('Component unmounted');
886
- };
887
- }, []);
888
- React.useEffect(function () {
889
- // Let's fetch the list initially if it's specified
890
- if (itemsIsAFunction) {
891
- debouncedFetchItems('');
352
+ iterator: values(e),
353
+ resultName: r,
354
+ nextLoc: n
355
+ }, "next" === this.method && (this.arg = t), y;
892
356
  }
893
- }, [itemsIsAFunction, itemsResolver]);
894
- return {
895
- items: normalizedItems,
896
- loading: itemsIsAFunction ? loading : false,
897
- fetchItems: debouncedFetchItems
898
- };
899
- };
900
-
901
- var _excluded$7 = ["highlightFirstItemOnOpen", "debounceTimeout", "disabled", "feedback", "items", "label", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "searchable", "selectOnTab", "openOnFocus", "variant", "value", "clearable", "className", "style", "listStyle", "itemFilter", "disableLabelAnimation"];
902
- /**
903
- * @deprecated
904
- * New Dropdown available
905
- *
906
- * migration guide to new dropdown:
907
- * - change import from 'DropdownDeprecated' to 'Dropdown'
908
- * + if 'searchable', switch to 'SearchableDropdown'
909
- * - change from 'value' to 'selectedItem'
910
- * + type of 'selectedItem' is 'NormalizedDropdownType' and does not include 'string'
911
- * - 'onChange' must update value of 'selectedItem'
912
- */
913
- var DropdownDeprecated = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
914
- var highlightFirstItemOnOpen = _ref.highlightFirstItemOnOpen,
915
- debounceTimeout = _ref.debounceTimeout,
916
- disabled = _ref.disabled,
917
- feedback = _ref.feedback,
918
- items = _ref.items,
919
- label = _ref.label,
920
- loadingText = _ref.loadingText,
921
- _ref$onChange = _ref.onChange,
922
- onChange = _ref$onChange === void 0 ? function () {
923
- return undefined;
924
- } : _ref$onChange,
925
- placeholder = _ref.placeholder,
926
- prepend = _ref.prepend,
927
- readOnly = _ref.readOnly,
928
- searchable = _ref.searchable,
929
- selectOnTab = _ref.selectOnTab,
930
- openOnFocus = _ref.openOnFocus,
931
- variant = _ref.variant,
932
- value = _ref.value,
933
- _ref$clearable = _ref.clearable,
934
- clearable = _ref$clearable === void 0 ? false : _ref$clearable,
935
- className = _ref.className,
936
- style = _ref.style,
937
- listStyle = _ref.listStyle,
938
- itemFilter = _ref.itemFilter,
939
- disableLabelAnimation = _ref.disableLabelAnimation,
940
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
941
- var _useResolvedItems = useResolvedItems(items, debounceTimeout),
942
- normalizedItems = _useResolvedItems.items,
943
- loading = _useResolvedItems.loading,
944
- fetchItems = _useResolvedItems.fetchItems;
945
- var selectedItem = value === undefined ? undefined : normalizedItems.find(function (item) {
946
- return value === item.value;
947
- }) || null;
948
- var RenderedDropdown = searchable ? SearchableDropdownDeprecated : RegularDropdownDeprecated;
949
- var searchAbleProps = searchable ? {
950
- itemFilter: itemFilter,
951
- name: rest.name,
952
- 'data-cy': rest['data-cy']
953
- } : {
954
- name: rest.name,
955
- 'data-cy': rest['data-cy']
956
- };
957
- return React.createElement(DownshiftProvider, _extends({
958
- selectedItem: selectedItem,
959
- onInputValueChange: fetchItems,
960
- onChange: onChange,
961
- value: value,
962
- highlightFirstItemOnOpen: highlightFirstItemOnOpen,
963
- className: className,
964
- style: style,
965
- searchable: searchable
966
- }, rest), React.createElement(DropdownInputGroupDeprecated, {
967
- feedback: feedback,
968
- variant: variant
969
- }, React.createElement(RenderedDropdown, _extends({
970
- label: label,
971
- items: normalizedItems,
972
- loading: loading,
973
- loadingText: loadingText,
974
- disabled: disabled,
975
- readOnly: readOnly,
976
- placeholder: placeholder,
977
- prepend: prepend,
978
- selectOnTab: selectOnTab,
979
- openOnFocus: openOnFocus,
980
- listStyle: listStyle,
981
- clearable: clearable,
982
- disableLabelAnimation: disableLabelAnimation,
983
- ref: ref
984
- }, searchAbleProps))));
985
- });
986
-
987
- var _excluded$6 = ["className", "clearable", "debounceTimeout", "disabled", "feedback", "initialSelectedItems", "items", "itemsSelectedLabel", "label", "listStyle", "loading", "loadingText", "onChange", "openOnFocus", "readOnly", "style", "variant"];
988
- var MultiSelectOldContext = /*#__PURE__*/React.createContext(null);
989
- var useMultiSelectOldContext = function useMultiSelectOldContext() {
990
- var context = React.useContext(MultiSelectOldContext);
991
- if (!context) {
992
- throw new Error('You need to wrap your component in a DownshiftProvider');
993
- }
994
- return context;
995
- };
996
- function stateReducer(state,
997
- //StateChangeOptions<NormalizedDropdownItemDeprecatedType>,
998
- actionAndChanges) {
999
- var changes = actionAndChanges.changes,
1000
- type = actionAndChanges.type;
1001
- switch (type) {
1002
- case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
1003
- case useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:
1004
- case useSelect.stateChangeTypes.ItemClick:
1005
- return _extends({}, changes, {
1006
- isOpen: true,
1007
- highlightedIndex: state.highlightedIndex
1008
- });
1009
- default:
1010
- return changes;
1011
- }
1012
- }
1013
- /**
1014
- * @deprecated
1015
- * New MultiSelect available
1016
- *
1017
- * migration guide to new dropdown:
1018
- * - change import from 'MultiSelectDeprecated' to 'MultiSelect'
1019
- * - add state containing selected items to 'selectedItems' prop
1020
- * + type of 'selectedItems' is 'NormalizedDropdownType[]' and does not include 'string'
1021
- * - 'onChange' must update value of 'selectedItem'
1022
- */
1023
- var MultiSelectDeprecated = function MultiSelectDeprecated(_ref) {
1024
- var className = _ref.className,
1025
- _ref$clearable = _ref.clearable,
1026
- clearable = _ref$clearable === void 0 ? false : _ref$clearable,
1027
- debounceTimeout = _ref.debounceTimeout,
1028
- disabled = _ref.disabled,
1029
- feedback = _ref.feedback,
1030
- _ref$initialSelectedI = _ref.initialSelectedItems,
1031
- initialSelectedItems = _ref$initialSelectedI === void 0 ? [] : _ref$initialSelectedI,
1032
- input = _ref.items,
1033
- _ref$itemsSelectedLab = _ref.itemsSelectedLabel,
1034
- itemsSelectedLabel = _ref$itemsSelectedLab === void 0 ? function (items) {
1035
- return SelectedItemsLabel(items);
1036
- } : _ref$itemsSelectedLab,
1037
- label = _ref.label,
1038
- listStyle = _ref.listStyle,
1039
- _ref$loading = _ref.loading,
1040
- loading = _ref$loading === void 0 ? false : _ref$loading,
1041
- _ref$loadingText = _ref.loadingText,
1042
- loadingText = _ref$loadingText === void 0 ? '' : _ref$loadingText,
1043
- _ref$onChange = _ref.onChange,
1044
- onChange = _ref$onChange === void 0 ? function () {
1045
- return undefined;
1046
- } : _ref$onChange,
1047
- _ref$openOnFocus = _ref.openOnFocus,
1048
- openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
1049
- _ref$readOnly = _ref.readOnly,
1050
- readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
1051
- style = _ref.style,
1052
- variant = _ref.variant,
1053
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
1054
- var _useResolvedItems = useResolvedItems(input, debounceTimeout),
1055
- items = _useResolvedItems.items;
1056
- var _useState = useState(initialSelectedItems),
1057
- selectedItems = _useState[0],
1058
- setSelectedItems = _useState[1];
1059
- var reset = React.useCallback(function () {
1060
- setSelectedItems([]);
1061
- }, []);
1062
- function isSelected(selectedCheckboxItem) {
1063
- return selectedItems.some(function (selected) {
1064
- return selected.value === selectedCheckboxItem.value;
1065
- });
1066
- }
1067
- var _useSelect = useSelect(_extends({
1068
- items: items,
1069
- stateReducer: stateReducer,
1070
- selectedItem: null,
1071
- onSelectedItemChange: function onSelectedItemChange(_ref2) {
1072
- var selectedItem = _ref2.selectedItem;
1073
- if (!selectedItem) {
1074
- return;
1075
- }
1076
- var itemIsFound = isSelected(selectedItem);
1077
- if (itemIsFound) {
1078
- var slicedItemList = selectedItems.filter(function (item) {
1079
- return item.value !== selectedItem.value;
1080
- });
1081
- setSelectedItems(slicedItemList);
1082
- onChange(slicedItemList);
1083
- } else {
1084
- var _slicedItemList = [].concat(selectedItems, [selectedItem]);
1085
- setSelectedItems(_slicedItemList);
1086
- onChange(_slicedItemList);
1087
- }
1088
- }
1089
- }, rest)),
1090
- isOpen = _useSelect.isOpen,
1091
- getToggleButtonProps = _useSelect.getToggleButtonProps,
1092
- getLabelProps = _useSelect.getLabelProps,
1093
- getMenuProps = _useSelect.getMenuProps,
1094
- highlightedIndex = _useSelect.highlightedIndex,
1095
- getItemProps = _useSelect.getItemProps,
1096
- openMenu = _useSelect.openMenu;
1097
- var buttonText = selectedItems.length ? itemsSelectedLabel(selectedItems) : '';
1098
- var multiSelectId = useRandomId('eds-multiselect');
1099
- return React.createElement(MultiSelectOldContext.Provider, {
1100
- value: {
1101
- isOpen: isOpen,
1102
- reset: reset,
1103
- getToggleButtonProps: getToggleButtonProps,
1104
- openMenu: openMenu,
1105
- openOnFocus: openOnFocus
1106
- }
1107
- }, React.createElement("div", {
1108
- className: classNames('eds-multiselect', 'eds-dropdown-wrapper', className),
1109
- style: style
1110
- }, React.createElement(BaseFormControl, {
1111
- label: label,
1112
- labelId: multiSelectId,
1113
- labelProps: getLabelProps,
1114
- feedback: feedback,
1115
- variant: variant,
1116
- isFilled: selectedItems.length > 0 || isOpen,
1117
- disabled: disabled,
1118
- readOnly: readOnly,
1119
- append: React.createElement(Appendix, {
1120
- hasSelected: clearable && selectedItems.length > 0,
1121
- loading: loading,
1122
- loadingText: loadingText,
1123
- readOnly: readOnly
1124
- })
1125
- }, React.createElement("button", _extends({}, getToggleButtonProps({
1126
- style: {
1127
- textAlign: 'left'
1128
- },
1129
- type: 'button',
1130
- className: 'eds-form-control eds-multiselect__button'
1131
- })), buttonText)), React.createElement("ul", _extends({
1132
- className: classNames('eds-dropdown-list', {
1133
- 'eds-dropdown-list--open': isOpen
1134
- })
1135
- }, getMenuProps({
1136
- style: _extends({
1137
- position: 'absolute',
1138
- top: space.extraLarge3 + space.extraSmall + "px"
1139
- }, listStyle)
1140
- })), isOpen && items.map(function (item, index) {
1141
- return React.createElement("li", _extends({
1142
- className: classNames('eds-dropdown-list__item', {
1143
- 'eds-dropdown-list__item--highlighted': highlightedIndex === index,
1144
- 'eds-dropdown-list__item--selected': isSelected(item)
1145
- }),
1146
- key: "" + item.value + index
1147
- }, getItemProps({
1148
- item: item,
1149
- index: index
1150
- }), {
1151
- style: {
1152
- display: 'flex'
1153
- }
1154
- }), React.createElement("span", {
1155
- style: {
1156
- display: 'flex'
1157
- }
1158
- }, React.createElement("span", {
1159
- className: classNames('eds-multiselect-checkbox', {
1160
- 'eds-multiselect-checkbox--checked': isSelected(item)
1161
- })
1162
- }, React.createElement(CheckboxIcon, null)), React.createElement("span", {
1163
- className: "eds-multiselect__item-label"
1164
- }, item.label)), item.icons && React.createElement("span", null, item.icons.map(function (Icon, index) {
1165
- return React.createElement(Icon, {
1166
- key: index,
1167
- inline: true,
1168
- className: "eds-dropdown-list__item-icon"
1169
- });
1170
- })));
1171
- }))));
1172
- };
1173
- var ClearButton = function ClearButton(_ref3) {
1174
- var props = _extends({}, (_objectDestructuringEmpty(_ref3), _ref3));
1175
- var _useMultiSelectOldCon = useMultiSelectOldContext(),
1176
- reset = _useMultiSelectOldCon.reset;
1177
- return React.createElement(React.Fragment, null, React.createElement("button", _extends({
1178
- className: "eds-dropdown__clear-button",
1179
- type: "button",
1180
- tabIndex: -1,
1181
- onClick: function onClick() {
1182
- return reset();
1183
- }
1184
- }, props), React.createElement(CloseIcon, null)), React.createElement("div", {
1185
- className: "eds-dropdown__divider"
1186
- }));
1187
- };
1188
- var Appendix = function Appendix(_ref4) {
1189
- var loading = _ref4.loading,
1190
- loadingText = _ref4.loadingText,
1191
- readOnly = _ref4.readOnly,
1192
- hasSelected = _ref4.hasSelected;
1193
- if (loading) {
1194
- return React.createElement(DropdownDeprecatedLoadingDots, null, loadingText);
1195
- }
1196
- if (readOnly) {
1197
- return null;
1198
- }
1199
- return hasSelected ? React.createElement(React.Fragment, null, React.createElement(ClearButton, null), React.createElement(DropdownToggleButton, null)) : React.createElement(DropdownToggleButton, null);
1200
- };
1201
- var DropdownToggleButton = function DropdownToggleButton() {
1202
- var _useMultiSelectOldCon2 = useMultiSelectOldContext(),
1203
- getToggleButtonProps = _useMultiSelectOldCon2.getToggleButtonProps,
1204
- isOpen = _useMultiSelectOldCon2.isOpen,
1205
- openMenu = _useMultiSelectOldCon2.openMenu,
1206
- openOnFocus = _useMultiSelectOldCon2.openOnFocus;
1207
- return React.createElement("button", _extends({}, getToggleButtonProps({
1208
- className: classNames('eds-dropdown__toggle-button', {
1209
- 'eds-dropdown__toggle-button--open': isOpen
1210
- }),
1211
- onFocus: function onFocus() {
1212
- if (openOnFocus) {
1213
- openMenu();
1214
- }
1215
- }
1216
- }), {
1217
- type: "button"
1218
- }), React.createElement(DownArrowIcon, null));
1219
- };
1220
- var CheckboxIcon = function CheckboxIcon() {
1221
- return React.createElement("svg", {
1222
- className: "eds-checkbox-icon",
1223
- width: "11px",
1224
- height: "9px",
1225
- viewBox: "6 11 37 33"
1226
- }, React.createElement("path", {
1227
- className: "eds-checkbox-icon__path",
1228
- d: "M14.1 27.2l7.1 7.2 14.6-14.8",
1229
- fill: "none"
1230
- }));
1231
- };
1232
- function SelectedItemsLabel(items) {
1233
- return items.length < 3 ? items.map(function (item) {
1234
- return item.label;
1235
- }).toString() : items.length + " elementer valgt";
357
+ }, e;
1236
358
  }
1237
359
 
1238
360
  var _excluded$5 = ["ariaLabelChosenSingular", "ariaLabelSelectedItem", "getItemProps", "getMenuProps", "inputValue", "isOpen", "highlightedIndex", "listItems", "floatingStyles", "setListRef", "loading", "loadingText", "noMatchesText", "selectAllCheckboxState", "selectAllItem", "selectedItems", "showSelectAllInList"];
@@ -1260,7 +382,7 @@ var DropdownList = function DropdownList(_ref) {
1260
382
  selectedItems = _ref.selectedItems,
1261
383
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
1262
384
  var isMultiselect = selectAllItem !== undefined;
1263
- var isNoMatches = !loading && (listItems.length === 0 || (listItems == null ? void 0 : listItems.length) === 1 && (listItems == null ? void 0 : (_listItems$ = listItems[0]) == null ? void 0 : _listItems$.value) === (selectAllItem == null ? void 0 : selectAllItem.value));
385
+ var isNoMatches = !loading && (listItems.length === 0 || (listItems == null ? void 0 : listItems.length) === 1 && (listItems == null || (_listItems$ = listItems[0]) == null ? void 0 : _listItems$.value) === (selectAllItem == null ? void 0 : selectAllItem.value));
1264
386
  var isItemSelected = function isItemSelected(item) {
1265
387
  return selectedItems.some(function (selectedItem) {
1266
388
  return (selectedItem == null ? void 0 : selectedItem.value) === (item == null ? void 0 : item.value) && (selectedItem == null ? void 0 : selectedItem.label) === (item == null ? void 0 : item.label);
@@ -1496,6 +618,121 @@ var ToggleButton = function ToggleButton(_ref5) {
1496
618
  }));
1497
619
  };
1498
620
 
621
+ var useNormalizedItems = function useNormalizedItems(items) {
622
+ return React.useMemo(function () {
623
+ return items.map(function (item) {
624
+ if (typeof item == 'string') {
625
+ return {
626
+ value: item,
627
+ label: item
628
+ };
629
+ }
630
+ if ((item == null ? void 0 : item.value) === undefined) {
631
+ return _extends({}, item, {
632
+ value: item.label
633
+ });
634
+ }
635
+ return _extends({}, item, {
636
+ value: item.value
637
+ });
638
+ });
639
+ }, [items]);
640
+ };
641
+
642
+ var useResolvedItems = function useResolvedItems(/** The list of items, or an async function that resolves the list of items */
643
+ itemsOrItemsResolver, /** The time to wait after the input changes to the fetchItems method is called */
644
+ debounceTimeout) {
645
+ if (debounceTimeout === void 0) {
646
+ debounceTimeout = 250;
647
+ }
648
+ var itemsIsAFunction = typeof itemsOrItemsResolver === 'function';
649
+ var _React$useState = React.useState(itemsIsAFunction ? [] : itemsOrItemsResolver),
650
+ items = _React$useState[0],
651
+ setItems = _React$useState[1];
652
+ var _React$useState2 = React.useState(false),
653
+ loading = _React$useState2[0],
654
+ setLoading = _React$useState2[1];
655
+ var abortControllerRef = React.useRef(new AbortController());
656
+ // We normalize the itemsResolver argument to an async function, so we
657
+ // can use it without thinking about the differences later
658
+ var itemsResolver = React.useMemo(function () {
659
+ if (itemsIsAFunction) return itemsOrItemsResolver;
660
+ return function () {
661
+ return Promise.resolve(itemsOrItemsResolver);
662
+ };
663
+ }, [itemsOrItemsResolver, itemsIsAFunction]);
664
+ // This should be called whenever the input value changes
665
+ var updateItems = /*#__PURE__*/function () {
666
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(inputValue) {
667
+ var _abortControllerRef$c;
668
+ var abortController, _abortControllerRef$c2, resolvedItems;
669
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
670
+ while (1) switch (_context.prev = _context.next) {
671
+ case 0:
672
+ // The abortController handles cleanup of the previous request and unmounting
673
+ if (abortControllerRef != null && abortControllerRef.current) abortControllerRef == null || (_abortControllerRef$c = abortControllerRef.current) == null || _abortControllerRef$c.abort();
674
+ abortController = new AbortController();
675
+ abortControllerRef.current = abortController;
676
+ setLoading(true);
677
+ _context.prev = 4;
678
+ _context.next = 7;
679
+ return itemsResolver(inputValue != null ? inputValue : '', abortControllerRef);
680
+ case 7:
681
+ resolvedItems = _context.sent;
682
+ if (!(abortControllerRef != null && (_abortControllerRef$c2 = abortControllerRef.current) != null && (_abortControllerRef$c2 = _abortControllerRef$c2.signal) != null && _abortControllerRef$c2.aborted)) {
683
+ _context.next = 11;
684
+ break;
685
+ }
686
+ console.warn('Avbryt den asynkrone funksjonen din med signalet fra AbortController-en for å for å unngå minnelekkasje.', 'Funksjonen bør kaste en DOMException med navnet "AbortError" når den avbrytes.', '', '\n\nSe eksempel her: https://design.entur.no/komponenter/skjemaelementer/dropdown#s%C3%B8kbar-dropdown-med-valg-fra-nettverkskall-bassert-p%C3%A5-tekstinput', '\nLes mer om AbortController her: https://developer.mozilla.org/en-US/docs/Web/API/AbortController');
687
+ return _context.abrupt("return");
688
+ case 11:
689
+ setLoading(false);
690
+ setItems(resolvedItems);
691
+ _context.next = 21;
692
+ break;
693
+ case 15:
694
+ _context.prev = 15;
695
+ _context.t0 = _context["catch"](4);
696
+ if (!(_context.t0 && typeof _context.t0 === 'object' && 'name' in _context.t0 && _context.t0.name === 'AbortError')) {
697
+ _context.next = 19;
698
+ break;
699
+ }
700
+ return _context.abrupt("return");
701
+ case 19:
702
+ console.warn('The following error was received but not handled inside Entur Designsystems useResolvedItems hook:');
703
+ throw _context.t0;
704
+ case 21:
705
+ case "end":
706
+ return _context.stop();
707
+ }
708
+ }, _callee, null, [[4, 15]]);
709
+ }));
710
+ return function updateItems(_x) {
711
+ return _ref.apply(this, arguments);
712
+ };
713
+ }();
714
+ var debouncedFetchItems = useDebounce(updateItems, debounceTimeout);
715
+ var normalizedItems = useNormalizedItems(items);
716
+ React.useEffect(function () {
717
+ // send abort signal to previous request on unmount for cleanup
718
+ return function () {
719
+ var _abortControllerRef$c3;
720
+ return abortControllerRef == null || (_abortControllerRef$c3 = abortControllerRef.current) == null ? void 0 : _abortControllerRef$c3.abort('Component unmounted');
721
+ };
722
+ }, []);
723
+ React.useEffect(function () {
724
+ // Let's fetch the list initially if it's specified
725
+ if (itemsIsAFunction) {
726
+ debouncedFetchItems('');
727
+ }
728
+ }, [itemsIsAFunction, itemsResolver]);
729
+ return {
730
+ items: normalizedItems,
731
+ loading: itemsIsAFunction ? loading : false,
732
+ fetchItems: debouncedFetchItems
733
+ };
734
+ };
735
+
1499
736
  /* start general utils */
1500
737
  var EMPTY_INPUT = '';
1501
738
  function lowerCaseFilterTest(item, input) {
@@ -1806,20 +1043,28 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1806
1043
  inputValue = _useCombobox.inputValue,
1807
1044
  setInputValue = _useCombobox.setInputValue;
1808
1045
  var _useFloating = useFloating({
1809
- whileElementsMounted: function whileElementsMounted(ref, _float, update) {
1810
- return autoUpdate(ref, _float, update);
1811
- },
1812
1046
  placement: 'bottom-start',
1813
1047
  open: isOpen,
1814
1048
  middleware: [offset(space.extraSmall2), flip()]
1815
1049
  }),
1816
1050
  refs = _useFloating.refs,
1817
- floatingStyles = _useFloating.floatingStyles;
1051
+ floatingStyles = _useFloating.floatingStyles,
1052
+ elements = _useFloating.elements,
1053
+ update = _useFloating.update;
1054
+ // Since we use CSS instead of conditional rendering when hiding dropdownlist
1055
+ // we can't use the whileElementsMounted option and need to handle
1056
+ // cleanup ourselves. See https://floating-ui.com/docs/autoupdate
1057
+ useEffect(function () {
1058
+ if (isOpen && elements.reference && elements.floating) {
1059
+ var cleanup = autoUpdate(elements.reference, elements.floating, update);
1060
+ return cleanup;
1061
+ }
1062
+ }, [isOpen, elements, update]);
1818
1063
  var handleOnClear = function handleOnClear() {
1819
1064
  var _inputRef$current;
1820
1065
  onChange(null);
1821
1066
  setInputValue(EMPTY_INPUT);
1822
- (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
1067
+ (_inputRef$current = inputRef.current) == null || _inputRef$current.focus();
1823
1068
  updateListItems({
1824
1069
  inputValue: inputValue
1825
1070
  });
@@ -1853,7 +1098,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1853
1098
  labelTooltip: labelTooltip,
1854
1099
  onClick: function onClick(e) {
1855
1100
  var _inputRef$current2;
1856
- if (e.target === e.currentTarget) (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.focus();
1101
+ if (e.target === e.currentTarget) (_inputRef$current2 = inputRef.current) == null || _inputRef$current2.focus();
1857
1102
  },
1858
1103
  prepend: prepend,
1859
1104
  readOnly: readOnly,
@@ -1867,7 +1112,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1867
1112
  "aria-hidden": "true",
1868
1113
  onClick: function onClick() {
1869
1114
  var _inputRef$current3;
1870
- (_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.focus();
1115
+ (_inputRef$current3 = inputRef.current) == null || _inputRef$current3.focus();
1871
1116
  openMenu();
1872
1117
  }
1873
1118
  }, showSelectedItem ? selectedItem == null ? void 0 : selectedItem.label : ''), React.createElement("input", _extends({
@@ -1884,7 +1129,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1884
1129
  setShowSelectedItem(false);
1885
1130
  },
1886
1131
  onKeyDown: function onKeyDown(e) {
1887
- if (selectOnTab && isOpen && e.key === 'Tab') onChange == null ? void 0 : onChange(listItems[highlightedIndex]);
1132
+ if (selectOnTab && isOpen && e.key === 'Tab') onChange == null || onChange(listItems[highlightedIndex]);
1888
1133
  },
1889
1134
  ref: inputRef
1890
1135
  }))), React.createElement(DropdownList, {
@@ -2060,7 +1305,7 @@ var MultiSelect = function MultiSelect(_ref) {
2060
1305
  }
2061
1306
  return _extends({}, changes, {
2062
1307
  isOpen: true,
2063
- inputValue: clearInputOnSelect ? EMPTY_INPUT : (_inputRef$current$val = inputRef == null ? void 0 : (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.value) != null ? _inputRef$current$val : EMPTY_INPUT
1308
+ inputValue: clearInputOnSelect ? EMPTY_INPUT : (_inputRef$current$val = inputRef == null || (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.value) != null ? _inputRef$current$val : EMPTY_INPUT
2064
1309
  });
2065
1310
  }
2066
1311
  // edit input value when selected items is updated outside component
@@ -2068,7 +1313,7 @@ var MultiSelect = function MultiSelect(_ref) {
2068
1313
  {
2069
1314
  var _inputRef$current$val2, _inputRef$current2;
2070
1315
  return _extends({}, changes, {
2071
- inputValue: (_inputRef$current$val2 = inputRef == null ? void 0 : (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value) != null ? _inputRef$current$val2 : EMPTY_INPUT
1316
+ inputValue: (_inputRef$current$val2 = inputRef == null || (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value) != null ? _inputRef$current$val2 : EMPTY_INPUT
2072
1317
  });
2073
1318
  }
2074
1319
  // remove leading whitespace, select item with spacebar if input is empty and filter list items
@@ -2116,6 +1361,7 @@ var MultiSelect = function MultiSelect(_ref) {
2116
1361
  }, [hideSelectAll, normalizedItems, filterListItems, initialItems]);
2117
1362
  var _useCombobox = useCombobox(_extends({
2118
1363
  defaultHighlightedIndex: lastHighlightedIndex,
1364
+ // after selection, highlight previously selected item.
2119
1365
  items: listItems,
2120
1366
  itemToString: itemToString,
2121
1367
  selectedItem: null,
@@ -2158,20 +1404,28 @@ var MultiSelect = function MultiSelect(_ref) {
2158
1404
  openMenu = _useCombobox.openMenu,
2159
1405
  setInputValue = _useCombobox.setInputValue;
2160
1406
  var _useFloating = useFloating({
2161
- whileElementsMounted: function whileElementsMounted(ref, _float, update) {
2162
- return autoUpdate(ref, _float, update);
2163
- },
2164
1407
  placement: 'bottom-start',
2165
1408
  open: isOpen,
2166
1409
  middleware: [offset(space.extraSmall2), flip()]
2167
1410
  }),
2168
1411
  refs = _useFloating.refs,
2169
- floatingStyles = _useFloating.floatingStyles;
1412
+ floatingStyles = _useFloating.floatingStyles,
1413
+ elements = _useFloating.elements,
1414
+ update = _useFloating.update;
1415
+ // Since we use CSS instead of conditional rendering when hiding dropdownlist
1416
+ // we can't use the whileElementsMounted option and need to handle
1417
+ // cleanup ourselves. See https://floating-ui.com/docs/autoupdate
1418
+ useEffect(function () {
1419
+ if (isOpen && elements.reference && elements.floating) {
1420
+ var cleanup = autoUpdate(elements.reference, elements.floating, update);
1421
+ return cleanup;
1422
+ }
1423
+ }, [isOpen, elements, update]);
2170
1424
  var handleOnClear = function handleOnClear() {
2171
1425
  var _inputRef$current3;
2172
1426
  onChange([]);
2173
1427
  setInputValue(EMPTY_INPUT);
2174
- (_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.focus();
1428
+ (_inputRef$current3 = inputRef.current) == null || _inputRef$current3.focus();
2175
1429
  updateListItems({
2176
1430
  inputValue: inputValue
2177
1431
  });
@@ -2204,7 +1458,7 @@ var MultiSelect = function MultiSelect(_ref) {
2204
1458
  labelTooltip: labelTooltip,
2205
1459
  onClick: function onClick(e) {
2206
1460
  var _inputRef$current4;
2207
- if (e.target === e.currentTarget) (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus();
1461
+ if (e.target === e.currentTarget) (_inputRef$current4 = inputRef.current) == null || _inputRef$current4.focus();
2208
1462
  },
2209
1463
  readOnly: readOnly,
2210
1464
  ref: refs.setReference,
@@ -2237,7 +1491,7 @@ var MultiSelect = function MultiSelect(_ref) {
2237
1491
  clickedItem: selectedItem,
2238
1492
  onChange: onChange
2239
1493
  });
2240
- inputRef == null ? void 0 : (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.focus();
1494
+ inputRef == null || (_inputRef$current6 = inputRef.current) == null || _inputRef$current6.focus();
2241
1495
  },
2242
1496
  selectedItem: selectedItem
2243
1497
  });
@@ -2348,7 +1602,7 @@ var Dropdown = function Dropdown(_ref) {
2348
1602
  case useSelect.stateChangeTypes.ItemClick:
2349
1603
  {
2350
1604
  if (newSelectedItem === undefined) return;
2351
- onChange == null ? void 0 : onChange(newSelectedItem != null ? newSelectedItem : null);
1605
+ onChange == null || onChange(newSelectedItem != null ? newSelectedItem : null);
2352
1606
  }
2353
1607
  }
2354
1608
  },
@@ -2362,15 +1616,23 @@ var Dropdown = function Dropdown(_ref) {
2362
1616
  getToggleButtonProps = _useSelect.getToggleButtonProps,
2363
1617
  highlightedIndex = _useSelect.highlightedIndex;
2364
1618
  var _useFloating = useFloating({
2365
- whileElementsMounted: function whileElementsMounted(ref, _float, update) {
2366
- return autoUpdate(ref, _float, update);
2367
- },
2368
1619
  placement: 'bottom-start',
2369
1620
  open: isOpen,
2370
1621
  middleware: [offset(space.extraSmall2), flip()]
2371
1622
  }),
2372
1623
  refs = _useFloating.refs,
2373
- floatingStyles = _useFloating.floatingStyles;
1624
+ floatingStyles = _useFloating.floatingStyles,
1625
+ elements = _useFloating.elements,
1626
+ update = _useFloating.update;
1627
+ // Since we use CSS instead of conditional rendering when hiding dropdownlist
1628
+ // we can't use the whileElementsMounted option and need to handle
1629
+ // cleanup ourselves. See https://floating-ui.com/docs/autoupdate
1630
+ useEffect(function () {
1631
+ if (isOpen && elements.reference && elements.floating) {
1632
+ var cleanup = autoUpdate(elements.reference, elements.floating, update);
1633
+ return cleanup;
1634
+ }
1635
+ }, [isOpen, elements, update]);
2374
1636
  return React.createElement(BaseFormControl, _extends({
2375
1637
  append: React.createElement(FieldAppend$1, {
2376
1638
  ariaHiddenToggleButton: true,
@@ -2385,8 +1647,8 @@ var Dropdown = function Dropdown(_ref) {
2385
1647
  loadingText: loadingText,
2386
1648
  onClear: function onClear() {
2387
1649
  var _toggleButtonRef$curr;
2388
- onChange == null ? void 0 : onChange(null);
2389
- (_toggleButtonRef$curr = toggleButtonRef.current) == null ? void 0 : _toggleButtonRef$curr.focus();
1650
+ onChange == null || onChange(null);
1651
+ (_toggleButtonRef$curr = toggleButtonRef.current) == null || _toggleButtonRef$curr.focus();
2390
1652
  },
2391
1653
  disabled: readOnly || disabled,
2392
1654
  selectedItems: [selectedItem]
@@ -2419,7 +1681,7 @@ var Dropdown = function Dropdown(_ref) {
2419
1681
  // we don't want to clear selection with tab
2420
1682
  var highlitedItem = normalizedItems[highlightedIndex];
2421
1683
  if (highlitedItem) {
2422
- onChange == null ? void 0 : onChange(highlitedItem);
1684
+ onChange == null || onChange(highlitedItem);
2423
1685
  }
2424
1686
  }
2425
1687
  },
@@ -2497,7 +1759,7 @@ var NativeDropdown = function NativeDropdown(_ref) {
2497
1759
  disabled: disabled || readOnly,
2498
1760
  onChange: function onChange(event) {
2499
1761
  var _normalizedItems$find;
2500
- _onChange == null ? void 0 : _onChange({
1762
+ _onChange == null || _onChange({
2501
1763
  value: event.target.value,
2502
1764
  selectedItem: (_normalizedItems$find = normalizedItems.find(function (item) {
2503
1765
  return item.value === event.target.value;
@@ -2534,5 +1796,5 @@ var FieldAppend = function FieldAppend(_ref3) {
2534
1796
 
2535
1797
  warnAboutMissingStyles('dropdown', 'form', 'a11y', 'chip');
2536
1798
 
2537
- export { Dropdown, DropdownDeprecated, MultiSelect, MultiSelectDeprecated, NativeDropdown, SearchableDropdown };
1799
+ export { Dropdown, MultiSelect, NativeDropdown, SearchableDropdown };
2538
1800
  //# sourceMappingURL=dropdown.esm.js.map