@linzjs/lui 17.10.3 → 17.11.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.
- package/CHANGELOG.md +7 -0
- package/dist/components/LuiListBox/LuiListBox.d.ts +33 -0
- package/dist/components/LuiListBox/LuiListBoxItem.d.ts +10 -0
- package/dist/components/LuiListBox/Renderers/CheckboxItemRenderer.d.ts +4 -0
- package/dist/components/LuiListBox/Renderers/DefaultItemRenderer.d.ts +3 -0
- package/dist/components/LuiListBox/Renderers/RadioItemRenderer.d.ts +4 -0
- package/dist/components/LuiListBox/helpers.d.ts +3 -0
- package/dist/index.js +886 -996
- package/dist/index.js.map +1 -1
- package/dist/lui.esm.js +872 -982
- package/dist/lui.esm.js.map +1 -1
- package/package.json +6 -1
package/dist/index.js
CHANGED
|
@@ -13,21 +13,21 @@ var reactQuery = require('react-query');
|
|
|
13
13
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
14
14
|
|
|
15
15
|
function _interopNamespace(e) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
});
|
|
26
|
-
}
|
|
16
|
+
if (e && e.__esModule) return e;
|
|
17
|
+
var n = Object.create(null);
|
|
18
|
+
if (e) {
|
|
19
|
+
Object.keys(e).forEach(function (k) {
|
|
20
|
+
if (k !== 'default') {
|
|
21
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
22
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
get: function () { return e[k]; }
|
|
27
25
|
});
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
n["default"] = e;
|
|
30
|
+
return Object.freeze(n);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
@@ -38,127 +38,8 @@ var lottie__default = /*#__PURE__*/_interopDefaultLegacy(lottie);
|
|
|
38
38
|
|
|
39
39
|
function r$2(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r$2(e[t]))&&(n&&(n+=" "),n+=f);else for(t in e)e[t]&&(n&&(n+=" "),n+=t);return n}function clsx(){for(var e,t,f=0,n="";f<arguments.length;)(e=arguments[f++])&&(t=r$2(e))&&(n&&(n+=" "),n+=t);return n}
|
|
40
40
|
|
|
41
|
-
/*! *****************************************************************************
|
|
42
|
-
Copyright (c) Microsoft Corporation.
|
|
43
|
-
|
|
44
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
45
|
-
purpose with or without fee is hereby granted.
|
|
46
|
-
|
|
47
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
48
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
49
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
50
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
51
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
52
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
53
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
54
|
-
***************************************************************************** */
|
|
55
|
-
/* global Reflect, Promise */
|
|
56
|
-
|
|
57
|
-
var extendStatics = function(d, b) {
|
|
58
|
-
extendStatics = Object.setPrototypeOf ||
|
|
59
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
60
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
61
|
-
return extendStatics(d, b);
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
function __extends(d, b) {
|
|
65
|
-
if (typeof b !== "function" && b !== null)
|
|
66
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
67
|
-
extendStatics(d, b);
|
|
68
|
-
function __() { this.constructor = d; }
|
|
69
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
var __assign = function() {
|
|
73
|
-
__assign = Object.assign || function __assign(t) {
|
|
74
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
75
|
-
s = arguments[i];
|
|
76
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
77
|
-
}
|
|
78
|
-
return t;
|
|
79
|
-
};
|
|
80
|
-
return __assign.apply(this, arguments);
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
function __rest(s, e) {
|
|
84
|
-
var t = {};
|
|
85
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
86
|
-
t[p] = s[p];
|
|
87
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
88
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
89
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
90
|
-
t[p[i]] = s[p[i]];
|
|
91
|
-
}
|
|
92
|
-
return t;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
96
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
97
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
98
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
99
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
100
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
101
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
function __generator(thisArg, body) {
|
|
106
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
107
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
108
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
109
|
-
function step(op) {
|
|
110
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
111
|
-
while (_) try {
|
|
112
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
113
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
114
|
-
switch (op[0]) {
|
|
115
|
-
case 0: case 1: t = op; break;
|
|
116
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
117
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
118
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
119
|
-
default:
|
|
120
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
121
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
122
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
123
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
124
|
-
if (t[2]) _.ops.pop();
|
|
125
|
-
_.trys.pop(); continue;
|
|
126
|
-
}
|
|
127
|
-
op = body.call(thisArg, _);
|
|
128
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
129
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function __read(o, n) {
|
|
134
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
135
|
-
if (!m) return o;
|
|
136
|
-
var i = m.call(o), r, ar = [], e;
|
|
137
|
-
try {
|
|
138
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
139
|
-
}
|
|
140
|
-
catch (error) { e = { error: error }; }
|
|
141
|
-
finally {
|
|
142
|
-
try {
|
|
143
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
144
|
-
}
|
|
145
|
-
finally { if (e) throw e.error; }
|
|
146
|
-
}
|
|
147
|
-
return ar;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
function __spreadArray(to, from, pack) {
|
|
151
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
152
|
-
if (ar || !(i in from)) {
|
|
153
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
154
|
-
ar[i] = from[i];
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
158
|
-
}
|
|
159
|
-
|
|
160
41
|
// START OF GENERATED FILE`;
|
|
161
|
-
|
|
42
|
+
let iconMap = {};
|
|
162
43
|
// @TODO This is a generated file, nothing is safe.
|
|
163
44
|
iconMap['ic_account_circle'] = (React__default["default"].createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24" },
|
|
164
45
|
React__default["default"].createElement("path", { d: "M12 19.219q1.594 0 3.352-.938T18 15.984q-.047-1.313-2.109-2.203T12 12.89t-3.891.867T6 15.984q.891 1.359 2.648 2.297t3.352.938zm0-14.203q-1.219 0-2.109.891T9 8.016t.891 2.109 2.109.891 2.109-.891T15 8.016t-.891-2.109T12 5.016zm0-3q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055T12 21.986t-7.055-2.93-2.93-7.055 2.93-7.055T12 2.016z" })));
|
|
@@ -456,33 +337,32 @@ iconMap['ic_zoom_out'] = (React__default["default"].createElement("svg", { viewB
|
|
|
456
337
|
React__default["default"].createElement("path", { d: "M19 13H5v-2h14v2Z" })));
|
|
457
338
|
iconMap['ic_zoom_previous'] = (React__default["default"].createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
458
339
|
React__default["default"].createElement("path", { d: "M6 6h2v12H6V6Zm12 12-8.5-6L18 6v12Zm-5.03-6L16 14.14V9.86L12.97 12Z" })));
|
|
459
|
-
|
|
340
|
+
const ICONS = iconMap;
|
|
460
341
|
// END OF GENERATED FILE
|
|
461
342
|
|
|
462
|
-
|
|
343
|
+
const ICON_SIZES = {
|
|
463
344
|
xs: 'LuiIcon--xs',
|
|
464
345
|
sm: 'LuiIcon--sm',
|
|
465
346
|
md: 'LuiIcon--md',
|
|
466
347
|
lg: 'LuiIcon--lg',
|
|
467
348
|
xl: 'LuiIcon--xl',
|
|
468
|
-
ns: 'LuiIcon--noSize'
|
|
349
|
+
ns: 'LuiIcon--noSize',
|
|
469
350
|
};
|
|
470
|
-
|
|
351
|
+
const ICON_STATUS = {
|
|
471
352
|
none: '',
|
|
472
353
|
error: 'LuiIcon--error',
|
|
473
354
|
warning: 'LuiIcon--warning',
|
|
474
355
|
success: 'LuiIcon--success',
|
|
475
356
|
interactive: 'LuiIcon--interactive',
|
|
476
|
-
disabled: 'LuiIcon--disabled'
|
|
357
|
+
disabled: 'LuiIcon--disabled',
|
|
477
358
|
};
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
var iconSVG = ICONS[name];
|
|
359
|
+
const LuiIcon = ({ name, className, size = 'ns', title, alt, status = 'none', spanProps, }) => {
|
|
360
|
+
const iconSVG = ICONS[name];
|
|
481
361
|
if (!iconSVG) {
|
|
482
|
-
console.warn(
|
|
362
|
+
console.warn(`<LuiIcon>: No icon found for: ${iconSVG}`);
|
|
483
363
|
return null;
|
|
484
364
|
}
|
|
485
|
-
return (React__namespace.createElement("span",
|
|
365
|
+
return (React__namespace.createElement("span", { className: clsx('LuiIcon', className, size && ICON_SIZES[size], status && ICON_STATUS[status]), "data-icon": name, title: title, "aria-label": alt, ...spanProps }, iconSVG));
|
|
486
366
|
};
|
|
487
367
|
|
|
488
368
|
function getMaterialIconForLevel(level) {
|
|
@@ -497,85 +377,84 @@ function getMaterialIconForLevel(level) {
|
|
|
497
377
|
return 'error';
|
|
498
378
|
}
|
|
499
379
|
}
|
|
500
|
-
|
|
501
|
-
return (React__default["default"].createElement("div", { className: clsx('lui-msg-banner-container', props.className ?
|
|
380
|
+
const LuiBanner = (props) => {
|
|
381
|
+
return (React__default["default"].createElement("div", { className: clsx('lui-msg-banner-container', props.className ? `${props.className}-bannerContainer` : '') },
|
|
502
382
|
React__default["default"].createElement(LuiBannerContent, { level: props.level, className: props.className }, props.children)));
|
|
503
383
|
};
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
return (React__default["default"].createElement("div", { className: clsx(
|
|
507
|
-
React__default["default"].createElement(LuiIcon, { name:
|
|
384
|
+
const LuiBannerContent = (props) => {
|
|
385
|
+
let materialIcon = getMaterialIconForLevel(props.level);
|
|
386
|
+
return (React__default["default"].createElement("div", { className: clsx(`lui-msg-${props.level} lui-msg-dynamic-banner`, props.className) },
|
|
387
|
+
React__default["default"].createElement(LuiIcon, { name: `ic_${materialIcon}`, alt: `${props.level} banner icon`, size: "lg", className: "lui-msg-status-icon" }),
|
|
508
388
|
React__default["default"].createElement("div", null, props.children)));
|
|
509
389
|
};
|
|
510
390
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
return display ? (React__default["default"].createElement("div", { className: clsx(
|
|
515
|
-
React__default["default"].createElement(LuiIcon, { name:
|
|
391
|
+
const LuiStaticMessage = (props) => {
|
|
392
|
+
const [display, setDisplay] = React.useState(true);
|
|
393
|
+
let materialIcon = getMaterialIconForLevel(props.level);
|
|
394
|
+
return display ? (React__default["default"].createElement("div", { className: clsx(`lui-msg-${props.level}`, props.className), "data-testid": 'static-message-container' },
|
|
395
|
+
React__default["default"].createElement(LuiIcon, { name: `ic_${materialIcon}`, alt: `${props.level} static icon`, size: "lg", className: "lui-msg-status-icon" }),
|
|
516
396
|
props.children,
|
|
517
|
-
(props.closable === undefined || props.closable) && (React__default["default"].createElement("button", { "aria-label": "Close dialog", onClick:
|
|
397
|
+
(props.closable === undefined || props.closable) && (React__default["default"].createElement("button", { "aria-label": "Close dialog", onClick: () => {
|
|
518
398
|
setDisplay(false);
|
|
519
399
|
} },
|
|
520
400
|
React__default["default"].createElement(LuiIcon, { name: "ic_clear", alt: 'close', size: "md", className: "LuiStaticMsg-close" }))))) : (React__default["default"].createElement(React__default["default"].Fragment, null));
|
|
521
401
|
};
|
|
522
402
|
|
|
523
|
-
|
|
524
|
-
return (React__default["default"].createElement("button",
|
|
403
|
+
const PlainButton = React__default["default"].forwardRef((props, ref) => {
|
|
404
|
+
return (React__default["default"].createElement("button", { ...props.buttonProps, type: props.type, title: props.title, disabled: props.disabled, name: props.name, onClick: props.onClick, className: clsx('lui-button', `lui-button-${props.level}`, `lui-button-${props.size}`, props.className), "data-testid": props['data-testid'], style: props.style, ref: ref }, props.children));
|
|
525
405
|
});
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
406
|
+
const LuiButton = React__default["default"].forwardRef((props, ref) => {
|
|
407
|
+
const _level = props.level ? props.level : 'primary';
|
|
408
|
+
const size = props.size ? props.size : 'med';
|
|
529
409
|
if (props.href) {
|
|
530
|
-
|
|
410
|
+
let aProps = {
|
|
531
411
|
href: props.href,
|
|
532
412
|
'data-testid': props['data-testid'],
|
|
533
413
|
name: props.name,
|
|
534
414
|
title: props.title,
|
|
535
|
-
className: clsx('lui-button',
|
|
536
|
-
style: props.style
|
|
415
|
+
className: clsx('lui-button', `lui-button-${props.level}`, `lui-button-${props.size}`, props.className),
|
|
416
|
+
style: props.style,
|
|
537
417
|
};
|
|
538
418
|
if (props.openInNewTab) {
|
|
539
419
|
aProps.target = '_blank';
|
|
540
420
|
aProps.rel = 'noopener noreferrer';
|
|
541
421
|
}
|
|
542
|
-
return React__default["default"].createElement("a",
|
|
422
|
+
return React__default["default"].createElement("a", { ...aProps }, props.children);
|
|
543
423
|
}
|
|
544
424
|
return (React__default["default"].createElement(PlainButton, { type: props.type, title: props.title, disabled: props.disabled, name: props.name, onClick: props.onClick, level: _level, size: size, "data-testid": props['data-testid'], style: props.style, className: props.className, buttonProps: props.buttonProps, ref: ref }, props.children));
|
|
545
425
|
});
|
|
546
426
|
/**
|
|
547
427
|
* A series of Lui buttons together.
|
|
548
428
|
*/
|
|
549
|
-
|
|
550
|
-
|
|
429
|
+
const LuiButtonGroup = (props) => {
|
|
430
|
+
const children = Array.isArray(props.children)
|
|
551
431
|
? props.children
|
|
552
432
|
: [props.children];
|
|
553
|
-
return (React__default["default"].createElement("div", { className: "lui-button-group", "data-testid": 'button-group' }, children.map(
|
|
433
|
+
return (React__default["default"].createElement("div", { className: "lui-button-group", "data-testid": 'button-group' }, children.map((child, i) => {
|
|
554
434
|
return (React__default["default"].createElement("div", { key: i, className: 'lui-button-wrapper' }, child));
|
|
555
435
|
})));
|
|
556
436
|
};
|
|
557
437
|
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
var callOnCloseAfterDissolved = function () {
|
|
438
|
+
const LuiToastMessage = ({ level, displayTimeout = 4000, display = true, requireDismiss, onClose, children, type, }) => {
|
|
439
|
+
const [className, setClassname] = React.useState('lui-msg-toast-show');
|
|
440
|
+
const [fadeOutTimer, setFadeOutTimer] = React.useState(undefined);
|
|
441
|
+
const [removeTimer, setRemoveTimer] = React.useState(undefined);
|
|
442
|
+
let materialIcon = getMaterialIconForLevel(level);
|
|
443
|
+
const callOnCloseAfterDissolved = () => {
|
|
565
444
|
// This is so the caller can remove it from the dom
|
|
566
445
|
if (onClose) {
|
|
567
|
-
|
|
446
|
+
const timer = window.setTimeout(onClose, displayTimeout);
|
|
568
447
|
setRemoveTimer(timer);
|
|
569
448
|
}
|
|
570
449
|
};
|
|
571
|
-
React.useEffect(
|
|
450
|
+
React.useEffect(() => {
|
|
572
451
|
// clear timers if previously set
|
|
573
452
|
fadeOutTimer && clearTimeout(fadeOutTimer);
|
|
574
453
|
removeTimer && clearTimeout(removeTimer);
|
|
575
454
|
setClassname('lui-msg-toast-show');
|
|
576
455
|
if (!requireDismiss && displayTimeout !== 0) {
|
|
577
456
|
// set a new timer
|
|
578
|
-
|
|
457
|
+
const timer = window.setTimeout(() => {
|
|
579
458
|
setClassname('lui-msg-toast-hide');
|
|
580
459
|
callOnCloseAfterDissolved();
|
|
581
460
|
}, displayTimeout);
|
|
@@ -583,36 +462,36 @@ var LuiToastMessage = function (_a) {
|
|
|
583
462
|
}
|
|
584
463
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
585
464
|
}, [requireDismiss, displayTimeout, children]);
|
|
586
|
-
React.useEffect(
|
|
465
|
+
React.useEffect(() => {
|
|
587
466
|
if (!display) {
|
|
588
467
|
setClassname('lui-msg-toast-hide');
|
|
589
468
|
callOnCloseAfterDissolved();
|
|
590
469
|
}
|
|
591
470
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
592
471
|
}, [display]);
|
|
593
|
-
return (React__default["default"].createElement("div", { role: "status", "data-testid": className, className:
|
|
472
|
+
return (React__default["default"].createElement("div", { role: "status", "data-testid": className, className: `lui-msg-${level} lui-msg-toast lui-msg-toast-dismissable ${className}` },
|
|
594
473
|
React__default["default"].createElement("i", { className: "lui-msg-status-icon material-icons-round" }, materialIcon),
|
|
595
474
|
children,
|
|
596
|
-
React__default["default"].createElement("button", { "aria-label": "Close dialog", type: type || 'button', onClick:
|
|
475
|
+
React__default["default"].createElement("button", { "aria-label": "Close dialog", type: type || 'button', onClick: () => {
|
|
597
476
|
setClassname('lui-msg-toast-hide');
|
|
598
477
|
callOnCloseAfterDissolved();
|
|
599
478
|
} },
|
|
600
479
|
React__default["default"].createElement("i", { className: "material-icons-round" }, "close"))));
|
|
601
480
|
};
|
|
602
481
|
|
|
603
|
-
|
|
482
|
+
const UIMessagingContext = React.createContext({
|
|
604
483
|
// @ts-ignore
|
|
605
|
-
showMessage:
|
|
484
|
+
showMessage: (props) => { },
|
|
606
485
|
});
|
|
607
486
|
function useShowLUIMessage() {
|
|
608
487
|
return React.useContext(UIMessagingContext).showMessage;
|
|
609
488
|
}
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
489
|
+
const LuiMessagingContextProvider = (props) => {
|
|
490
|
+
const [_message, setMessage] = React.useState();
|
|
491
|
+
const [_messageType, setMessageType] = React.useState();
|
|
492
|
+
const [_messageLevel, setMessageLevel] = React.useState('success');
|
|
493
|
+
const [_requireDismiss, setRequireDismiss] = React.useState(true);
|
|
494
|
+
const showMessage = (props) => {
|
|
616
495
|
setMessage(props.message);
|
|
617
496
|
setMessageType(props.messageType);
|
|
618
497
|
setMessageLevel(props.messageLevel);
|
|
@@ -620,10 +499,10 @@ var LuiMessagingContextProvider = function (props) {
|
|
|
620
499
|
? props.messageLevel === 'error'
|
|
621
500
|
: props.requireDismiss);
|
|
622
501
|
};
|
|
623
|
-
|
|
502
|
+
const renderMessage = () => {
|
|
624
503
|
switch (_messageType) {
|
|
625
504
|
case 'toast':
|
|
626
|
-
return (React__default["default"].createElement(LuiToastMessage, { onClose:
|
|
505
|
+
return (React__default["default"].createElement(LuiToastMessage, { onClose: () => {
|
|
627
506
|
setMessage(undefined);
|
|
628
507
|
}, level: _messageLevel, requireDismiss: _requireDismiss },
|
|
629
508
|
React__default["default"].createElement("span", { "data-testid": 'toastMessageShow' }, typeof _message === 'string' ? React__default["default"].createElement("h2", null, _message) : _message)));
|
|
@@ -631,45 +510,45 @@ var LuiMessagingContextProvider = function (props) {
|
|
|
631
510
|
return null;
|
|
632
511
|
}
|
|
633
512
|
};
|
|
634
|
-
return (React__default["default"].createElement(UIMessagingContext.Provider, { value: { showMessage
|
|
513
|
+
return (React__default["default"].createElement(UIMessagingContext.Provider, { value: { showMessage } },
|
|
635
514
|
_message && renderMessage(),
|
|
636
515
|
props.children));
|
|
637
516
|
};
|
|
638
517
|
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
518
|
+
const LuiExpandableBanner = (props) => {
|
|
519
|
+
const display = React.useRef(null);
|
|
520
|
+
const [collapse, setCollapse] = React.useState(true);
|
|
521
|
+
const collapseSection = (element) => {
|
|
643
522
|
// get the height of the element's inner content, regardless of its actual size
|
|
644
|
-
|
|
523
|
+
const sectionHeight = element.scrollHeight;
|
|
645
524
|
// on the next frame (as soon as the previous style change has taken effect),
|
|
646
525
|
// explicitly set the element's height to its current pixel height, so we
|
|
647
526
|
// aren't transitioning out of 'auto'
|
|
648
|
-
requestAnimationFrame(
|
|
527
|
+
requestAnimationFrame(() => {
|
|
649
528
|
element.style.height = sectionHeight + 'px';
|
|
650
529
|
// on the next frame (as soon as the previous style change has taken effect),
|
|
651
530
|
// have the element transition to height: 0
|
|
652
|
-
requestAnimationFrame(
|
|
531
|
+
requestAnimationFrame(() => {
|
|
653
532
|
element.style.height = 0 + 'px';
|
|
654
533
|
});
|
|
655
534
|
});
|
|
656
535
|
// mark the section as "currently collapsed"
|
|
657
536
|
setCollapse(true);
|
|
658
537
|
};
|
|
659
|
-
|
|
538
|
+
const expandSection = (element) => {
|
|
660
539
|
// get the height of the element's inner content, regardless of its actual size
|
|
661
|
-
|
|
540
|
+
const sectionHeight = element.scrollHeight;
|
|
662
541
|
// have the element transition to the height of its inner content
|
|
663
542
|
element.style.height = sectionHeight + 'px';
|
|
664
543
|
// when the next css transition finishes (which should be the one we just triggered)
|
|
665
|
-
setTimeout(
|
|
544
|
+
setTimeout(() => {
|
|
666
545
|
element.style.height = 'auto';
|
|
667
546
|
}, 500);
|
|
668
547
|
// mark the section as "currently not collapsed"
|
|
669
548
|
setCollapse(false);
|
|
670
549
|
};
|
|
671
|
-
|
|
672
|
-
|
|
550
|
+
const expandFunction = () => {
|
|
551
|
+
const section = display.current;
|
|
673
552
|
if (collapse) {
|
|
674
553
|
expandSection(section);
|
|
675
554
|
}
|
|
@@ -692,36 +571,33 @@ var LuiExpandableBanner = function (props) {
|
|
|
692
571
|
* A menu controlled by a user-supplied MenuButton. Open/closed state is managed internally. The defaulted style props,
|
|
693
572
|
* menuClassName and offsetY, can be overridden simply by setting them in the usual way.
|
|
694
573
|
*/
|
|
695
|
-
|
|
696
|
-
return React__default["default"].createElement(reactMenu.Menu,
|
|
574
|
+
const LuiMenu = (props) => {
|
|
575
|
+
return React__default["default"].createElement(reactMenu.Menu, { menuClassName: 'lui-menu', offsetY: 12, ...props });
|
|
697
576
|
};
|
|
698
577
|
/**
|
|
699
578
|
* A menu with state managed externally. Can be used quite conveniently as a context menu. The defaulted style props,
|
|
700
579
|
* menuClassName and offsetY, can be overridden simply by setting them in the usual way.
|
|
701
580
|
*/
|
|
702
|
-
|
|
703
|
-
return React__default["default"].createElement(reactMenu.ControlledMenu,
|
|
581
|
+
const LuiControlledMenu = (props) => {
|
|
582
|
+
return React__default["default"].createElement(reactMenu.ControlledMenu, { menuClassName: 'lui-menu', offsetY: 12, ...props });
|
|
704
583
|
};
|
|
705
584
|
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
return React__default["default"].createElement(reactMenu.Menu, __assign({ menuClassName: 'lui-select-menu', offsetY: 12 }, props));
|
|
585
|
+
const LuiSelectMenu = ({ ...props }) => {
|
|
586
|
+
return React__default["default"].createElement(reactMenu.Menu, { menuClassName: 'lui-select-menu', offsetY: 12, ...props });
|
|
709
587
|
};
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
return (React__default["default"].createElement(reactMenu.MenuItem, __assign({}, rest, { className: clsx('lui-select-menuItem', "lui-select-menuItem--".concat(level ? level : 'primary'), rest.className), "data-testid": rest['data-testid'] }),
|
|
588
|
+
const LuiSelectMenuItem = ({ iconName, iconAlt, level, noPadding = false, ...rest }) => {
|
|
589
|
+
return (React__default["default"].createElement(reactMenu.MenuItem, { ...rest, className: clsx('lui-select-menuItem', `lui-select-menuItem--${level ? level : 'primary'}`, rest.className), "data-testid": rest['data-testid'] },
|
|
713
590
|
iconName ? (React__default["default"].createElement(LuiIcon, { className: "lui-select-icon", name: iconName, alt: iconAlt ? iconAlt : '', size: "md" })) : (''),
|
|
714
591
|
React__default["default"].createElement("p", { className: clsx('lui-select-menuItemText', {
|
|
715
|
-
'lui-select-menuItemText--noPadding': noPadding
|
|
592
|
+
'lui-select-menuItemText--noPadding': noPadding,
|
|
716
593
|
}) }, rest.children)));
|
|
717
594
|
};
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
return (React__default["default"].createElement(reactMenu.SubMenu, __assign({}, rest, { className: clsx({ 'lui-select-submenu': iconName === undefined }, { 'lui-select-submenu-with-icon': !!iconName }, rest.className), menuClassName: 'lui-select-menu', label: iconName === undefined
|
|
595
|
+
const LuiSelectSubMenuItem = ({ label, iconName, iconAlt, ...rest }) => {
|
|
596
|
+
return (React__default["default"].createElement(reactMenu.SubMenu, { ...rest, className: clsx({ 'lui-select-submenu': iconName === undefined }, { 'lui-select-submenu-with-icon': !!iconName }, rest.className), menuClassName: 'lui-select-menu', label: iconName === undefined
|
|
721
597
|
? label
|
|
722
|
-
: LuiSubMenuComponent(label, iconName, iconAlt) }
|
|
598
|
+
: LuiSubMenuComponent(label, iconName, iconAlt) }, rest.children));
|
|
723
599
|
};
|
|
724
|
-
|
|
600
|
+
const LuiSubMenuComponent = (label, iconName, iconAlt) => {
|
|
725
601
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
726
602
|
iconName === undefined ? ('') : (React__default["default"].createElement(LuiIcon, { className: "lui-menu-sub-header-icon", name: iconName, alt: iconAlt ? iconAlt : '', size: "md" })),
|
|
727
603
|
label));
|
|
@@ -756,11 +632,10 @@ let nanoid = (size = 21) => {
|
|
|
756
632
|
};
|
|
757
633
|
|
|
758
634
|
// Lui Select menu with dynamic data
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
return (React__default["default"].createElement(LuiSelectMenu, __assign({ menuClassName: 'lui-select-menu', offsetY: 12 }, props), displayMenu(props.items)));
|
|
635
|
+
const LuiSelectDataMenu = ({ ...props }) => {
|
|
636
|
+
return (React__default["default"].createElement(LuiSelectMenu, { menuClassName: 'lui-select-menu', offsetY: 12, ...props }, displayMenu(props.items)));
|
|
762
637
|
};
|
|
763
|
-
|
|
638
|
+
const displayMenu = (items) => (React__default["default"].createElement(React__default["default"].Fragment, null, items.map((item) => {
|
|
764
639
|
if (item.options === undefined) {
|
|
765
640
|
return (React__default["default"].createElement(React__default["default"].Fragment, { key: nanoid() },
|
|
766
641
|
item.header ? React__default["default"].createElement(GroupHeader, null, item.headerLabel) : null,
|
|
@@ -770,18 +645,15 @@ var displayMenu = function (items) { return (React__default["default"].createEle
|
|
|
770
645
|
return (React__default["default"].createElement(React__default["default"].Fragment, { key: nanoid() },
|
|
771
646
|
React__default["default"].createElement(LuiSelectSubMenuItem, { label: item.label, iconName: item.iconName }, displayMenu(item.options))));
|
|
772
647
|
}
|
|
773
|
-
})));
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
children && (React__default["default"].createElement(reactMenu.MenuHeader, { autoCapitalize: "false", className: "lui-select-menu-group" }, children))));
|
|
779
|
-
};
|
|
780
|
-
var LuiSelectMenuDivider = function () {
|
|
648
|
+
})));
|
|
649
|
+
const GroupHeader = ({ children, }) => (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
650
|
+
React__default["default"].createElement(reactMenu.MenuDivider, { className: "lui-select-divider" }),
|
|
651
|
+
children && (React__default["default"].createElement(reactMenu.MenuHeader, { autoCapitalize: "false", className: "lui-select-menu-group" }, children))));
|
|
652
|
+
const LuiSelectMenuDivider = () => {
|
|
781
653
|
return React__default["default"].createElement(reactMenu.MenuDivider, { className: "lui-select-divider" });
|
|
782
654
|
};
|
|
783
|
-
|
|
784
|
-
return React__default["default"].createElement(reactMenu.MenuHeader,
|
|
655
|
+
const LuiSelectMenuHeader = (props) => {
|
|
656
|
+
return React__default["default"].createElement(reactMenu.MenuHeader, { className: "lui-select-menu-group", ...props });
|
|
785
657
|
};
|
|
786
658
|
|
|
787
659
|
function styleInject(css, ref) {
|
|
@@ -811,12 +683,12 @@ function styleInject(css, ref) {
|
|
|
811
683
|
}
|
|
812
684
|
}
|
|
813
685
|
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
686
|
+
const LuiFilterMenu = (props) => {
|
|
687
|
+
const [filter, setFilter] = React.useState('');
|
|
688
|
+
const { toggleMenu, ...menuProps } = reactMenu.useMenuState();
|
|
689
|
+
const ref = React.useRef(null);
|
|
818
690
|
return (React__default["default"].createElement("div", { ref: ref },
|
|
819
|
-
props.menuButton(
|
|
691
|
+
props.menuButton(() => {
|
|
820
692
|
switch (props.enabled) {
|
|
821
693
|
case false: {
|
|
822
694
|
toggleMenu(false);
|
|
@@ -828,28 +700,23 @@ var LuiFilterMenu = function (props) {
|
|
|
828
700
|
}
|
|
829
701
|
}
|
|
830
702
|
}),
|
|
831
|
-
React__default["default"].createElement(reactMenu.ControlledMenu,
|
|
703
|
+
React__default["default"].createElement(reactMenu.ControlledMenu, { ...menuProps, anchorRef: ref, onClose: () => toggleMenu(false), className: "lui-menu", offsetY: 12, onChange: (e) => {
|
|
832
704
|
e.open && setFilter('');
|
|
833
705
|
}, menuStyles: props.maxRows !== undefined
|
|
834
706
|
? { maxHeight: 62 + 34 * props.maxRows, overflowY: 'auto' }
|
|
835
|
-
: {} }
|
|
836
|
-
React__default["default"].createElement(reactMenu.FocusableItem, null,
|
|
837
|
-
var ref = _a.ref;
|
|
838
|
-
return (React__default["default"].createElement("input", { ref: ref, type: "text", placeholder: "Type to filter", value: filter, onChange: function (e) { return setFilter(e.target.value); } }));
|
|
839
|
-
}),
|
|
707
|
+
: {} },
|
|
708
|
+
React__default["default"].createElement(reactMenu.FocusableItem, null, ({ ref }) => (React__default["default"].createElement("input", { ref: ref, type: "text", placeholder: "Type to filter", value: filter, onChange: (e) => setFilter(e.target.value) }))),
|
|
840
709
|
props.filteredItems
|
|
841
|
-
.filter(
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
.map(function (item) {
|
|
845
|
-
if ((item === null || item === void 0 ? void 0 : item.specialType) === 'div') {
|
|
710
|
+
.filter((item) => item.display.toUpperCase().includes(filter.trim().toUpperCase()))
|
|
711
|
+
.map((item) => {
|
|
712
|
+
if (item?.specialType === 'div') {
|
|
846
713
|
return React__default["default"].createElement(reactMenu.MenuDivider, { key: item.id });
|
|
847
714
|
}
|
|
848
|
-
else if (
|
|
715
|
+
else if (item?.specialType === 'head') {
|
|
849
716
|
return React__default["default"].createElement(reactMenu.MenuHeader, { key: item.id }, item.display);
|
|
850
717
|
}
|
|
851
718
|
else {
|
|
852
|
-
return (React__default["default"].createElement(reactMenu.MenuItem, { key: item.id, onMouseDown:
|
|
719
|
+
return (React__default["default"].createElement(reactMenu.MenuItem, { key: item.id, onMouseDown: (e) => {
|
|
853
720
|
props.onItemClick(item.id);
|
|
854
721
|
e.stopPropagation();
|
|
855
722
|
} }, item.display));
|
|
@@ -857,51 +724,50 @@ var LuiFilterMenu = function (props) {
|
|
|
857
724
|
}))));
|
|
858
725
|
};
|
|
859
726
|
|
|
860
|
-
|
|
727
|
+
const LuiTabsContext = React__default["default"].createContext({
|
|
861
728
|
activePanel: null,
|
|
862
|
-
setActivePanel:
|
|
729
|
+
setActivePanel: () => { },
|
|
863
730
|
});
|
|
864
|
-
|
|
865
|
-
|
|
731
|
+
const LuiTabs = (props) => {
|
|
732
|
+
let [activePanel, setActivePanel] = React.useState(props.defaultPanel);
|
|
866
733
|
return (React__default["default"].createElement("div", { className: "LuiTabs" },
|
|
867
|
-
React__default["default"].createElement(LuiTabsContext.Provider, { value: { activePanel
|
|
734
|
+
React__default["default"].createElement(LuiTabsContext.Provider, { value: { activePanel, setActivePanel } }, props.children)));
|
|
868
735
|
};
|
|
869
736
|
|
|
870
|
-
|
|
871
|
-
return (React__default["default"].createElement("button", { className: clsx('LuiTab', props.active && 'LuiTab--active'), id: props.id, role: "tab", "aria-selected": props.active, "aria-controls":
|
|
737
|
+
const LuiTab = (props) => {
|
|
738
|
+
return (React__default["default"].createElement("button", { className: clsx('LuiTab', props.active && 'LuiTab--active'), id: props.id, role: "tab", "aria-selected": props.active, "aria-controls": `${props.ariaControls}`, title: props.titleAttribute, onClick: props.onClick }, props.children));
|
|
872
739
|
};
|
|
873
740
|
|
|
874
741
|
// import './LuiTabsGroup.scss';
|
|
875
|
-
|
|
876
|
-
return (React__default["default"].createElement("div", { className:
|
|
742
|
+
const LuiTabsGroup = (props) => {
|
|
743
|
+
return (React__default["default"].createElement("div", { className: `LuiTabsGroup ${props.justify ? 'LuiTabsGroup--justified' : ''}`, role: "tablist", "aria-label": props.ariaLabel }, props.children));
|
|
877
744
|
};
|
|
878
745
|
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
React.useEffect(function () {
|
|
746
|
+
const LuiTabsPanel = ({ children, panel, mode = 'eager', }) => {
|
|
747
|
+
const context = React.useContext(LuiTabsContext);
|
|
748
|
+
const [shouldShow, setShouldShow] = React.useState(mode === 'eager');
|
|
749
|
+
let active = context.activePanel === panel;
|
|
750
|
+
React.useEffect(() => {
|
|
885
751
|
if (active && !shouldShow) {
|
|
886
752
|
setShouldShow(true);
|
|
887
753
|
}
|
|
888
754
|
}, [active, shouldShow]);
|
|
889
|
-
return (React__default["default"].createElement("div", { className: clsx('LuiTabsPanel', active && 'LuiTabsPanel--active'), id:
|
|
755
|
+
return (React__default["default"].createElement("div", { className: clsx('LuiTabsPanel', active && 'LuiTabsPanel--active'), id: `${panel}-tab-panel`, role: "tabpanel", "aria-labelledby": `${panel}-tab` }, shouldShow ? children : null));
|
|
890
756
|
};
|
|
891
757
|
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
return (React__default["default"].createElement(LuiTab, { id:
|
|
758
|
+
const LuiTabsPanelSwitch = (props) => {
|
|
759
|
+
const context = React.useContext(LuiTabsContext);
|
|
760
|
+
let active = context.activePanel === props.targetPanel;
|
|
761
|
+
return (React__default["default"].createElement(LuiTab, { id: `${props.targetPanel}-tab`, ariaControls: `${props.targetPanel}-tab-panel`, active: active, onClick: () => {
|
|
896
762
|
if (context.setActivePanel)
|
|
897
763
|
context.setActivePanel(props.targetPanel);
|
|
898
764
|
} }, props.children));
|
|
899
765
|
};
|
|
900
766
|
|
|
901
767
|
function useDeprecatedWarning(componentName) {
|
|
902
|
-
React.useEffect(
|
|
768
|
+
React.useEffect(() => {
|
|
903
769
|
if (window.location.hostname.includes('localhost')) {
|
|
904
|
-
console.warn(
|
|
770
|
+
console.warn(`${componentName} will be deprecated in future versions of Lui. Please see the 'Current Deprecations' page in Lui docs.`);
|
|
905
771
|
}
|
|
906
772
|
}, []);
|
|
907
773
|
}
|
|
@@ -909,11 +775,11 @@ function useDeprecatedWarning(componentName) {
|
|
|
909
775
|
function LuiFormikForm(props) {
|
|
910
776
|
useDeprecatedWarning('LuiFormikForm');
|
|
911
777
|
// this spreads all keys, except className
|
|
912
|
-
|
|
913
|
-
|
|
778
|
+
const { className, ...formikProps } = { ...props };
|
|
779
|
+
const classNames = clsx(props.className);
|
|
914
780
|
return (
|
|
915
781
|
// @ts-ignore not fixing due this component being deprecated
|
|
916
|
-
React__default["default"].createElement(formik.Formik,
|
|
782
|
+
React__default["default"].createElement(formik.Formik, { ...formikProps },
|
|
917
783
|
React__default["default"].createElement("div", { className: classNames },
|
|
918
784
|
React__default["default"].createElement(formik.Form, null,
|
|
919
785
|
props.children,
|
|
@@ -923,12 +789,9 @@ function LuiFormikForm(props) {
|
|
|
923
789
|
var css_248z$5 = "/**\n @deprecated\n */\n/**\n @deprecated\n */\n/**\n @deprecated\n */\n.LuiError {\n font-family: \"Open Sans\", system-ui, sans-serif;\n font-style: normal;\n font-weight: 600;\n margin-bottom: 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5rem;\n color: #2a292c;\n}\n.LuiError-errorIcon {\n vertical-align: middle;\n display: inline-block;\n}\n.LuiError-errorText {\n margin-left: 0.5rem;\n}";
|
|
924
790
|
styleInject(css_248z$5);
|
|
925
791
|
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
React__default["default"].createElement(LuiIcon, { className: "LuiError-errorIcon ".concat(className, "-errorIcon"), alt: 'Error', name: "ic_error", size: "md", status: "error" }),
|
|
930
|
-
error && (React__default["default"].createElement("span", { className: "LuiError-errorText ".concat(className, "-errorText") }, error))));
|
|
931
|
-
};
|
|
792
|
+
const LuiError = ({ error, className }) => (React__default["default"].createElement("div", { className: `LuiError ${className}-error` },
|
|
793
|
+
React__default["default"].createElement(LuiIcon, { className: `LuiError-errorIcon ${className}-errorIcon`, alt: 'Error', name: "ic_error", size: "md", status: "error" }),
|
|
794
|
+
error && (React__default["default"].createElement("span", { className: `LuiError-errorText ${className}-errorText` }, error))));
|
|
932
795
|
|
|
933
796
|
// Unique ID creation requires a high quality random # generator. In the browser we therefore
|
|
934
797
|
// require the crypto API and do not support built-in fallback to lower quality random number
|
|
@@ -1005,57 +868,53 @@ function v4(options, buf, offset) {
|
|
|
1005
868
|
}
|
|
1006
869
|
|
|
1007
870
|
function useGenerateOrDefaultId(idFromProps) {
|
|
1008
|
-
|
|
871
|
+
const [id] = React.useState(idFromProps ? idFromProps : v4());
|
|
1009
872
|
return id;
|
|
1010
873
|
}
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
var id = useGenerateOrDefaultId((_a = props.inputProps) === null || _a === void 0 ? void 0 : _a.id);
|
|
874
|
+
const LuiTextInput = (props) => {
|
|
875
|
+
const id = useGenerateOrDefaultId(props.inputProps?.id);
|
|
1014
876
|
return (React__default["default"].createElement("div", { className: clsx('LuiTextInput', props.error && 'hasError', props.className) },
|
|
1015
877
|
React__default["default"].createElement("label", { className: 'LuiTextInput-label', htmlFor: id },
|
|
1016
878
|
props.mandatory && React__default["default"].createElement("span", { className: "LuiTextInput-mandatory" }, "*"),
|
|
1017
879
|
React__default["default"].createElement("span", { className: 'LuiTextInput-label-text ' +
|
|
1018
880
|
clsx(props.hideLabel ? 'LuiScreenReadersOnly' : '') }, props.label),
|
|
1019
881
|
React__default["default"].createElement("span", { className: "LuiTextInput-inputWrapper" },
|
|
1020
|
-
React__default["default"].createElement("input",
|
|
1021
|
-
clsx('LuiTextInput-input'), min: "0", value: props.value, onChange: props.onChange
|
|
882
|
+
React__default["default"].createElement("input", { type: 'text', className: (props.showPadlockIcon ? 'LuiTextInput-padlock-icon ' : '') +
|
|
883
|
+
clsx('LuiTextInput-input'), min: "0", value: props.value, onChange: props.onChange, ...props.inputProps, id: id }),
|
|
1022
884
|
props.icon),
|
|
1023
885
|
props.error && (React__default["default"].createElement("span", { className: "LuiTextInput-error" },
|
|
1024
886
|
React__default["default"].createElement(LuiIcon, { alt: "error", name: "ic_error", className: "LuiTextInput-error-icon", size: "sm", status: "error" }),
|
|
1025
887
|
props.error)))));
|
|
1026
888
|
};
|
|
1027
889
|
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
var id = useGenerateOrDefaultId((_a = props.inputProps) === null || _a === void 0 ? void 0 : _a.id);
|
|
890
|
+
const LuiCheckboxInput = (props) => {
|
|
891
|
+
const id = useGenerateOrDefaultId(props.inputProps?.id);
|
|
1031
892
|
return (React__default["default"].createElement("div", { className: clsx('LuiCheckboxInput', {
|
|
1032
893
|
'LuiCheckboxInput--isChecked': props.isChecked,
|
|
1033
894
|
'LuiCheckboxInput--hasError': !!props.error,
|
|
1034
|
-
'LuiCheckboxInput--isDisabled': !!props.isDisabled
|
|
895
|
+
'LuiCheckboxInput--isDisabled': !!props.isDisabled,
|
|
1035
896
|
}, props.className) },
|
|
1036
897
|
React__default["default"].createElement("label", { htmlFor: id, className: "LuiCheckboxInput-group" },
|
|
1037
898
|
props.mandatory && (React__default["default"].createElement("span", { "aria-label": "Required", className: "LuiCheckboxInput-mandatory" }, "*")),
|
|
1038
|
-
React__default["default"].createElement("input",
|
|
899
|
+
React__default["default"].createElement("input", { className: clsx('LuiCheckboxInput-input'), id: id, type: "checkbox", value: props.value, onChange: props.onChange, checked: props.isChecked, disabled: props.isDisabled, ...props.inputProps }),
|
|
1039
900
|
React__default["default"].createElement("span", { className: "LuiCheckboxInput-label" },
|
|
1040
901
|
props.label,
|
|
1041
902
|
React__default["default"].createElement(LuiIcon, { name: props.isIndeterminate ? 'ic_zoom_out' : 'ic_check', size: "md", alt: props.isIndeterminate ? 'Indeterminate Check' : 'Check', className: "LuiCheckboxInput-labelCheck", title: props.titleAttribute }))),
|
|
1042
903
|
props.error && (React__default["default"].createElement(LuiError, { className: "LuiCheckboxInput", error: props.error }))));
|
|
1043
904
|
};
|
|
1044
905
|
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
906
|
+
const LuiFileInputBox = (props) => {
|
|
907
|
+
const [file, setFile] = React.useState();
|
|
908
|
+
const [hasFileFormatError, setHasFileFormatError] = React.useState(false);
|
|
909
|
+
const onChange = (e) => {
|
|
1049
910
|
// Logic to go here to check extensions and setHasFileFormatError
|
|
1050
911
|
setHasFileFormatError(false);
|
|
1051
|
-
|
|
912
|
+
const files = e.target.files;
|
|
1052
913
|
// File upload box is configured to only accept 1 file, we can't have more than one here
|
|
1053
914
|
if (files && files.length === 1) {
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
});
|
|
1058
|
-
var fileName = selectedFile.name;
|
|
915
|
+
const selectedFile = files[0];
|
|
916
|
+
const supportedFileTypes = props.acceptedExtensions.map((ext) => ext.toUpperCase());
|
|
917
|
+
const fileName = selectedFile.name;
|
|
1059
918
|
if (!supportedFileTypes.includes(getFileNameExtension(fileName))) {
|
|
1060
919
|
setHasFileFormatError(true);
|
|
1061
920
|
setFile(undefined);
|
|
@@ -1066,10 +925,10 @@ var LuiFileInputBox = function (props) {
|
|
|
1066
925
|
}
|
|
1067
926
|
}
|
|
1068
927
|
};
|
|
1069
|
-
|
|
928
|
+
const hasError = hasFileFormatError || props.showMustSelectFileError === true;
|
|
1070
929
|
return (React__default["default"].createElement("div", { className: clsx('LuiFileInputBox-upload', hasError && 'LuiFileInputBox-upload-error'), style: { width: props.width || 320, height: props.height || 320 } },
|
|
1071
930
|
React__default["default"].createElement("input", { role: "button", "aria-label": "File Upload", type: "file", className: "LuiFileInputBox-upload-input", accept: props.acceptedExtensions
|
|
1072
|
-
.map(
|
|
931
|
+
.map((extension) => `.${extension}`)
|
|
1073
932
|
.join(','), onChange: onChange }),
|
|
1074
933
|
React__default["default"].createElement(React__default["default"].Fragment, null, hasError ? (React__default["default"].createElement("div", { className: "LuiFileInputBox-upload-container" },
|
|
1075
934
|
React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
@@ -1079,26 +938,26 @@ var LuiFileInputBox = function (props) {
|
|
|
1079
938
|
"You must select a file with extension of",
|
|
1080
939
|
' ',
|
|
1081
940
|
extensionsAsHumanReadableList(props.acceptedExtensions),
|
|
1082
|
-
"."))))) : (React__default["default"].createElement(FileUploadInfo, { fileName: file
|
|
941
|
+
"."))))) : (React__default["default"].createElement(FileUploadInfo, { fileName: file?.name, fileFormatText: props.fileFormatText, fileDescription: props.fileDescription })))));
|
|
1083
942
|
};
|
|
1084
943
|
// Only exported for chromatic
|
|
1085
|
-
|
|
1086
|
-
|
|
944
|
+
const FileUploadInfo = (props) => {
|
|
945
|
+
const DragAndDropInstruction = () => (React__default["default"].createElement("p", { className: "LuiFileInputBox-upload-text" },
|
|
1087
946
|
"Drag and drop your ",
|
|
1088
947
|
props.fileDescription,
|
|
1089
948
|
" into the box",
|
|
1090
949
|
React__default["default"].createElement("br", null),
|
|
1091
|
-
React__default["default"].createElement("span", null, "(or upload file manually)")));
|
|
1092
|
-
|
|
950
|
+
React__default["default"].createElement("span", null, "(or upload file manually)")));
|
|
951
|
+
const WaitingForFileSelection = () => (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1093
952
|
React__default["default"].createElement("div", { className: 'LuiFileInputBox-upload-icon-upload' },
|
|
1094
953
|
React__default["default"].createElement(LuiIcon, { name: "ic_publish", size: 'ns', alt: "Upload" })),
|
|
1095
954
|
React__default["default"].createElement(DragAndDropInstruction, null),
|
|
1096
|
-
props.fileFormatText && (React__default["default"].createElement("p", { className: "LuiFileInputBox-upload-text LuiFileInputBox-upload-text-no-padding" }, props.fileFormatText))));
|
|
1097
|
-
|
|
955
|
+
props.fileFormatText && (React__default["default"].createElement("p", { className: "LuiFileInputBox-upload-text LuiFileInputBox-upload-text-no-padding" }, props.fileFormatText))));
|
|
956
|
+
const UploadSuccess = () => (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1098
957
|
React__default["default"].createElement("div", { className: 'LuiFileInputBox-upload-icon-success' },
|
|
1099
958
|
React__default["default"].createElement(LuiIcon, { name: "ic_check_circle_outline", size: 'ns', alt: "Success" })),
|
|
1100
959
|
React__default["default"].createElement("p", { className: "LuiFileInputBox-upload-file-name" }, props.fileName),
|
|
1101
|
-
React__default["default"].createElement(DragAndDropInstruction, null)));
|
|
960
|
+
React__default["default"].createElement(DragAndDropInstruction, null)));
|
|
1102
961
|
return (React__default["default"].createElement("div", { className: "LuiFileInputBox-upload-container" }, props.fileName ? React__default["default"].createElement(UploadSuccess, null) : React__default["default"].createElement(WaitingForFileSelection, null)));
|
|
1103
962
|
};
|
|
1104
963
|
/**
|
|
@@ -1107,8 +966,8 @@ var FileUploadInfo = function (props) {
|
|
|
1107
966
|
* @param fileName File-name to get extension from
|
|
1108
967
|
* @return fileName extension in upper-case if found else empty string
|
|
1109
968
|
*/
|
|
1110
|
-
|
|
1111
|
-
|
|
969
|
+
const getFileNameExtension = (fileName) => {
|
|
970
|
+
const idx = fileName.lastIndexOf('.');
|
|
1112
971
|
return idx === -1 ? '' : fileName.substr(idx + 1).toUpperCase();
|
|
1113
972
|
};
|
|
1114
973
|
/**
|
|
@@ -1118,68 +977,63 @@ var getFileNameExtension = function (fileName) {
|
|
|
1118
977
|
* @param extensions List of extensions to convert.
|
|
1119
978
|
* @return Extensions in a human readable string in upper-case.
|
|
1120
979
|
*/
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
return extension.toUpperCase();
|
|
1124
|
-
});
|
|
980
|
+
const extensionsAsHumanReadableList = (extensions) => {
|
|
981
|
+
const uppercaseExtensions = extensions.map((extension) => extension.toUpperCase());
|
|
1125
982
|
if (!extensions.length)
|
|
1126
983
|
return '';
|
|
1127
984
|
if (extensions.length === 1)
|
|
1128
985
|
return uppercaseExtensions[0];
|
|
1129
|
-
return
|
|
986
|
+
return `${uppercaseExtensions.slice(0, -1).join(', ')} or ${uppercaseExtensions[extensions.length - 1]}`;
|
|
1130
987
|
};
|
|
1131
988
|
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
return (React__default["default"].createElement("div", { className: clsx('LuiSelect', ((_b = props.selectProps) === null || _b === void 0 ? void 0 : _b.disabled) ? 'isDisabled' : '', props.error ? 'hasError' : '') },
|
|
989
|
+
const LuiSelectInput = (props) => {
|
|
990
|
+
const id = useGenerateOrDefaultId(props.selectProps?.id);
|
|
991
|
+
return (React__default["default"].createElement("div", { className: clsx('LuiSelect', props.selectProps?.disabled ? 'isDisabled' : '', props.error ? 'hasError' : '') },
|
|
1136
992
|
React__default["default"].createElement("label", { htmlFor: id, className: "LuiSelect-label" },
|
|
1137
993
|
props.mandatory && React__default["default"].createElement("span", { className: "LuiSelect-mandatory" }, "*"),
|
|
1138
994
|
React__default["default"].createElement("span", { className: clsx('LuiSelect-label-text', props.hideLabel ? 'LuiScreenReadersOnly' : '') }, props.label),
|
|
1139
995
|
React__default["default"].createElement("div", { className: "LuiSelect-wrapper" },
|
|
1140
|
-
React__default["default"].createElement("select",
|
|
996
|
+
React__default["default"].createElement("select", { name: id, onChange: props.onChange, value: props.value, className: "LuiSelect-select", ...props.selectProps },
|
|
1141
997
|
props.placeholderText && (React__default["default"].createElement("option", { value: "", disabled: true }, props.placeholderText)),
|
|
1142
|
-
props.options.map(
|
|
998
|
+
props.options.map((selection) => (React__default["default"].createElement("option", { key: selection.value, value: selection.value }, selection.label)))),
|
|
1143
999
|
React__default["default"].createElement(LuiIcon, { alt: 'Error', name: "ic_keyboard_arrow_down", className: "LuiSelect-chevron-icon", size: "md" })),
|
|
1144
1000
|
props.error && (React__default["default"].createElement("span", { className: "LuiSelect-error" },
|
|
1145
1001
|
React__default["default"].createElement(LuiIcon, { alt: 'Error', name: "ic_error", className: "LuiSelect-error-icon", size: "sm", status: "error" }),
|
|
1146
1002
|
props.error)))));
|
|
1147
1003
|
};
|
|
1148
1004
|
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
return (React__default["default"].createElement("div", { className: clsx('LuiTextAreaInput', ((_b = props.inputProps) === null || _b === void 0 ? void 0 : _b.disabled) ? 'isDisabled' : '', (props === null || props === void 0 ? void 0 : props.error) ? 'hasError' : '') },
|
|
1005
|
+
const LuiTextAreaInput = (props) => {
|
|
1006
|
+
const id = useGenerateOrDefaultId(props.inputProps?.id);
|
|
1007
|
+
return (React__default["default"].createElement("div", { className: clsx('LuiTextAreaInput', props.inputProps?.disabled ? 'isDisabled' : '', props?.error ? 'hasError' : '') },
|
|
1153
1008
|
React__default["default"].createElement("label", { htmlFor: id },
|
|
1154
1009
|
props.mandatory && (React__default["default"].createElement("span", { className: "LuiTextAreaInput-mandatory" }, "*")),
|
|
1155
1010
|
React__default["default"].createElement("span", { className: "LuiTextAreaInput-label" }, props.label),
|
|
1156
1011
|
React__default["default"].createElement("div", { className: "LuiTextAreaInput-wrapper" },
|
|
1157
1012
|
' ',
|
|
1158
|
-
React__default["default"].createElement("textarea",
|
|
1013
|
+
React__default["default"].createElement("textarea", { id: id, value: props.value, onChange: props.onChange, rows: 5, ...props.inputProps }))),
|
|
1159
1014
|
props.error && (React__default["default"].createElement("span", { className: "LuiTextAreaInput-error" },
|
|
1160
1015
|
React__default["default"].createElement(LuiIcon, { alt: "error", name: "ic_error", className: "LuiTextAreaInput-error-icon", size: "sm", status: "error" }),
|
|
1161
1016
|
props.error))));
|
|
1162
1017
|
};
|
|
1163
1018
|
|
|
1164
1019
|
// @NOTE Can use LuiRadioInput in block form and pass through your own legend (label)
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
var id = useGenerateOrDefaultId((_a = props.inputProps) === null || _a === void 0 ? void 0 : _a.id);
|
|
1020
|
+
const LuiRadioInput = (props) => {
|
|
1021
|
+
const id = useGenerateOrDefaultId(props.inputProps?.id);
|
|
1168
1022
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1169
1023
|
React__default["default"].createElement("div", { className: clsx('LuiRadioInput', {
|
|
1170
|
-
'LuiRadioInput--hasError': props.error
|
|
1024
|
+
'LuiRadioInput--hasError': props.error,
|
|
1171
1025
|
}) },
|
|
1172
1026
|
React__default["default"].createElement("fieldset", { className: 'LuiRadioInput-fieldset' },
|
|
1173
1027
|
props.legend && (React__default["default"].createElement("legend", { className: "LuiRadioInput-legend" }, props.legend)),
|
|
1174
|
-
props.options.map(
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1028
|
+
props.options.map((option, index) => {
|
|
1029
|
+
const radioId = `${id}-${index}`;
|
|
1030
|
+
const isSelected = props.selectedValue === option;
|
|
1031
|
+
const isDisabled = props.isOptionDisabled && props.isOptionDisabled(index);
|
|
1178
1032
|
return (React__default["default"].createElement("label", { htmlFor: radioId, className: clsx('LuiRadioInput-label', {
|
|
1179
1033
|
'LuiRadioInput-label--isDisabled': isDisabled,
|
|
1180
|
-
'LuiRadioInput-label--isSelected': isSelected
|
|
1034
|
+
'LuiRadioInput-label--isSelected': isSelected,
|
|
1181
1035
|
}), key: radioId },
|
|
1182
|
-
React__default["default"].createElement("input",
|
|
1036
|
+
React__default["default"].createElement("input", { disabled: isDisabled, className: "LuiRadioInput-input", type: "radio", id: radioId, name: option, value: option, checked: isSelected, onChange: props.onChange, ...props.inputProps }),
|
|
1183
1037
|
props.renderLabelFor ? props.renderLabelFor(option) : option));
|
|
1184
1038
|
})),
|
|
1185
1039
|
props.error && (React__default["default"].createElement("div", { className: "LuiRadioInput-errorMsg" },
|
|
@@ -1189,76 +1043,70 @@ var LuiRadioInput = function (props) {
|
|
|
1189
1043
|
|
|
1190
1044
|
function LuiFormikCheckbox(props) {
|
|
1191
1045
|
useDeprecatedWarning('LuiFormikCheckbox');
|
|
1192
|
-
|
|
1046
|
+
let ctx = formik.useFormikContext();
|
|
1193
1047
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1194
|
-
React__default["default"].createElement(formik.Field, { name: props.name },
|
|
1195
|
-
|
|
1196
|
-
var showError = formik.getIn(ctx === null || ctx === void 0 ? void 0 : ctx.errors, props.name);
|
|
1048
|
+
React__default["default"].createElement(formik.Field, { name: props.name }, ({ field }) => {
|
|
1049
|
+
const showError = formik.getIn(ctx?.errors, props.name);
|
|
1197
1050
|
return (React__default["default"].createElement("div", { className: clsx(showError && 'lui-input-error') },
|
|
1198
1051
|
React__default["default"].createElement("div", { className: "lui-input-group-wrapper " },
|
|
1199
1052
|
showError && (React__default["default"].createElement("i", { className: "lui-form-status-icon material-icons-round" }, "error")),
|
|
1200
1053
|
React__default["default"].createElement("div", { className: clsx('lui-checkbox-container', props.className) },
|
|
1201
|
-
React__default["default"].createElement("input",
|
|
1054
|
+
React__default["default"].createElement("input", { ...props.inputProps, type: "checkbox", id: props.value, disabled: !!props.disabled, checked: field.value, ...field }),
|
|
1202
1055
|
typeof props.label === 'string' ? (React__default["default"].createElement("label", { htmlFor: props.value }, props.label)) : (props.label)))));
|
|
1203
1056
|
})));
|
|
1204
1057
|
}
|
|
1205
1058
|
|
|
1206
|
-
|
|
1059
|
+
const LuiFormikFormLabel = (props) => {
|
|
1207
1060
|
useDeprecatedWarning('LuiFormikFormLabel');
|
|
1208
|
-
return (React__default["default"].createElement("div", { className: clsx('LuiFormLabel-wrapper', props.className &&
|
|
1061
|
+
return (React__default["default"].createElement("div", { className: clsx('LuiFormLabel-wrapper', props.className && `${props.className}`) },
|
|
1209
1062
|
props.children,
|
|
1210
|
-
React__default["default"].createElement("label", { className: "LuiFormLabel", htmlFor: props
|
|
1063
|
+
React__default["default"].createElement("label", { className: "LuiFormLabel", htmlFor: props.for },
|
|
1211
1064
|
props.required && React__default["default"].createElement("span", { className: "lui-required-input-icon" }, "*"),
|
|
1212
1065
|
props.label),
|
|
1213
1066
|
props.tooltip && React__default["default"].createElement("i", { className: "material-icons-round" }, "help")));
|
|
1214
1067
|
};
|
|
1215
1068
|
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1069
|
+
const LuiFormikTextInput = formik.connect((props) => {
|
|
1070
|
+
const error = formik.getIn(props.formik.errors, props.name);
|
|
1071
|
+
const touch = formik.getIn(props.formik.touched, props.name);
|
|
1072
|
+
const showError = touch && error;
|
|
1073
|
+
const { setFieldValue } = formik.useFormikContext();
|
|
1221
1074
|
useDeprecatedWarning('LuiFormikTextInput');
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
props.
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
} })));
|
|
1242
|
-
};
|
|
1243
|
-
return (React__default["default"].createElement("div", { className: clsx(props.className && "".concat(props.className)) },
|
|
1244
|
-
props.label && (React__default["default"].createElement(LuiFormikFormLabel, { required: props.required, label: props.label, "for": props.name, tooltip: props.tooltip })),
|
|
1075
|
+
const multiLineToggle = (field) => !props.multiLine ? (React__default["default"].createElement("input", { id: props.name, "data-testid": props.name, ...field, type: "text", ...props.inputProps, onChange: (event) => {
|
|
1076
|
+
setFieldValue(props.name, event.target.value, props.validateOnChange ?? true);
|
|
1077
|
+
if (props.onValueChange) {
|
|
1078
|
+
props.onValueChange({
|
|
1079
|
+
value: event.target.value,
|
|
1080
|
+
formik: props.formik,
|
|
1081
|
+
});
|
|
1082
|
+
}
|
|
1083
|
+
} })) : (React__default["default"].createElement("textarea", { id: props.name, "data-testid": props.name, ...field, rows: 1, ...props.inputProps, onChange: (event) => {
|
|
1084
|
+
setFieldValue(props.name, event.target.value, props.validateOnChange ?? true);
|
|
1085
|
+
if (props.onValueChange) {
|
|
1086
|
+
props.onValueChange({
|
|
1087
|
+
value: event.target.value,
|
|
1088
|
+
formik: props.formik,
|
|
1089
|
+
});
|
|
1090
|
+
}
|
|
1091
|
+
} }));
|
|
1092
|
+
return (React__default["default"].createElement("div", { className: clsx(props.className && `${props.className}`) },
|
|
1093
|
+
props.label && (React__default["default"].createElement(LuiFormikFormLabel, { required: props.required, label: props.label, for: props.name, tooltip: props.tooltip })),
|
|
1245
1094
|
props.helperInfo,
|
|
1246
|
-
React__default["default"].createElement(formik.Field, { name: props.name, validate: props.validate },
|
|
1247
|
-
var field = _a.field;
|
|
1095
|
+
React__default["default"].createElement(formik.Field, { name: props.name, validate: props.validate }, ({ field }) => {
|
|
1248
1096
|
return (React__default["default"].createElement("div", { className: clsx(showError && 'lui-input-error') },
|
|
1249
|
-
React__default["default"].createElement(formik.ErrorMessage, { name: props.name, render:
|
|
1097
|
+
React__default["default"].createElement(formik.ErrorMessage, { name: props.name, render: () => (React__default["default"].createElement("i", { className: "lui-form-status-icon material-icons-round" }, "error")) }),
|
|
1250
1098
|
multiLineToggle(field),
|
|
1251
1099
|
React__default["default"].createElement(formik.ErrorMessage, { name: props.name, className: 'lui-error-msg', component: "p" })));
|
|
1252
1100
|
})));
|
|
1253
1101
|
});
|
|
1254
1102
|
|
|
1255
|
-
|
|
1256
|
-
|
|
1103
|
+
const LuiFormikRadioButton = (props) => {
|
|
1104
|
+
const [field, meta] = formik.useField(props);
|
|
1257
1105
|
useDeprecatedWarning('LuiFormikRadioButton');
|
|
1258
1106
|
return (React__default["default"].createElement("div", { className: props.className },
|
|
1259
1107
|
meta.touched && meta.error && (React__default["default"].createElement("i", { className: "lui-form-status-icon material-icons-round" }, "error")),
|
|
1260
1108
|
React__default["default"].createElement("div", { className: 'lui-radio-container' },
|
|
1261
|
-
React__default["default"].createElement("input",
|
|
1109
|
+
React__default["default"].createElement("input", { disabled: !!props.disabled, ...field, checked: props.value === field.value, value: props.value, id: props.value, type: "radio", ...props.inputProps }),
|
|
1262
1110
|
React__default["default"].createElement("label", { htmlFor: props.value }, props.label))));
|
|
1263
1111
|
};
|
|
1264
1112
|
|
|
@@ -1398,14 +1246,14 @@ camelcase$1.exports.default = camelCase;
|
|
|
1398
1246
|
var camelcase = camelcase$1.exports;
|
|
1399
1247
|
|
|
1400
1248
|
// TODO: It's annoying that we have to pass name into the RadioGroup and RadioButton
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1249
|
+
const LuiFormikRadioGroup = (props) => {
|
|
1250
|
+
let ctx = formik.useFormikContext();
|
|
1251
|
+
const error = formik.getIn(ctx.errors, props.name);
|
|
1252
|
+
const touch = formik.getIn(ctx.touched, props.name);
|
|
1253
|
+
const showError = touch && error;
|
|
1406
1254
|
useDeprecatedWarning('LuiFormikRadioGroup');
|
|
1407
|
-
|
|
1408
|
-
|
|
1255
|
+
const describedby = props.hint && camelcase(props?.hint) + 'Id';
|
|
1256
|
+
const errorDescribedBy = error && camelcase(error) + 'Id';
|
|
1409
1257
|
return (React__default["default"].createElement("div", { className: clsx('lui-fieldsetBlock-form-group', showError && 'lui-input-error') },
|
|
1410
1258
|
React__default["default"].createElement("fieldset", { "aria-describedby": clsx(props.hint && describedby + 'Id', showError && errorDescribedBy) },
|
|
1411
1259
|
React__default["default"].createElement("legend", null,
|
|
@@ -1418,42 +1266,42 @@ var LuiFormikRadioGroup = function (props) {
|
|
|
1418
1266
|
React__default["default"].createElement("div", { className: "lui-input-group-wrapper" }, props.children))));
|
|
1419
1267
|
};
|
|
1420
1268
|
|
|
1421
|
-
|
|
1269
|
+
const LuiFormikFormSubmitButton = formik.connect((props) => {
|
|
1422
1270
|
useDeprecatedWarning('LuiFormikFormSubmitButton');
|
|
1423
1271
|
return (React__default["default"].createElement(LuiButton, { type: "submit", className: props.className, level: "primary", "data-testid": props['data-testid'], disabled: !!props.disabled }, props.children));
|
|
1424
1272
|
});
|
|
1425
1273
|
|
|
1426
|
-
|
|
1274
|
+
const LuiFormikSelect = formik.connect((props) => {
|
|
1427
1275
|
useDeprecatedWarning('LuiFormikSelect');
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1276
|
+
const error = formik.getIn(props.formik.errors, props.name);
|
|
1277
|
+
const touch = formik.getIn(props.formik.touched, props.name);
|
|
1278
|
+
const showError = touch && error;
|
|
1431
1279
|
return (React__default["default"].createElement("div", { className: props.className },
|
|
1432
|
-
props.label && (React__default["default"].createElement(LuiFormikFormLabel, { className: 'lui-margin-bottom-xxs',
|
|
1280
|
+
props.label && (React__default["default"].createElement(LuiFormikFormLabel, { className: 'lui-margin-bottom-xxs', for: props.name, label: props.label, required: !!props.required, tooltip: props.tooltip })),
|
|
1433
1281
|
props.helperInfo,
|
|
1434
1282
|
React__default["default"].createElement("div", { className: clsx('lui-input-wrapper', showError && 'lui-input-error') },
|
|
1435
|
-
React__default["default"].createElement(formik.ErrorMessage, { name: props.name, render:
|
|
1436
|
-
React__default["default"].createElement(formik.Field,
|
|
1283
|
+
React__default["default"].createElement(formik.ErrorMessage, { name: props.name, render: () => (React__default["default"].createElement("i", { className: "lui-form-status-icon material-icons-round" }, "error")) }),
|
|
1284
|
+
React__default["default"].createElement(formik.Field, { disabled: props.disabled, defaultValue: props.defaultValue, name: props.name, id: props.name, validate: props.validate, as: "select", ...props.inputProps }, props.children),
|
|
1437
1285
|
React__default["default"].createElement(formik.ErrorMessage, { name: props.name, className: 'lui-error-msg', component: "p" }))));
|
|
1438
1286
|
});
|
|
1439
1287
|
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1288
|
+
const LuiBearingInput = (props) => {
|
|
1289
|
+
const maxDecimal = 1;
|
|
1290
|
+
const maxAfterDP = 4 + maxDecimal;
|
|
1291
|
+
const parseBearing = (decimalIsh) => {
|
|
1292
|
+
const sign = decimalIsh.startsWith('-') ? '-' : '+';
|
|
1293
|
+
const parts = decimalIsh.split('.');
|
|
1294
|
+
const degrees = Math.abs(parseInt(parts[0])) || 0;
|
|
1295
|
+
let remainder = parts.length > 1 ? parts[1] : '0000';
|
|
1448
1296
|
while (remainder.length < 4) {
|
|
1449
1297
|
remainder += '0';
|
|
1450
1298
|
}
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
return { sign
|
|
1299
|
+
const minutes = parseInt(remainder.substr(0, 2));
|
|
1300
|
+
const seconds = parseFloat(`${remainder.substr(2, 2)}.${remainder.length > 4 ? remainder.substr(4, 2) : '0'}`);
|
|
1301
|
+
return { sign, degrees, minutes, seconds };
|
|
1454
1302
|
};
|
|
1455
|
-
|
|
1456
|
-
|
|
1303
|
+
const validateBearing = (bearing) => {
|
|
1304
|
+
const signedDegrees = bearing.sign === '-' ? bearing.degrees * -1 : bearing.degrees;
|
|
1457
1305
|
if (signedDegrees < -360 || signedDegrees > 360)
|
|
1458
1306
|
return 'Degrees must be between -360 and 360';
|
|
1459
1307
|
if (bearing.minutes < 0 || bearing.minutes >= 60)
|
|
@@ -1464,16 +1312,16 @@ var LuiBearingInput = function (props) {
|
|
|
1464
1312
|
//here ---
|
|
1465
1313
|
return null;
|
|
1466
1314
|
};
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
return
|
|
1315
|
+
const formatBearing = (decimalIsh) => {
|
|
1316
|
+
const { sign, degrees, minutes, seconds } = parseBearing(decimalIsh);
|
|
1317
|
+
const displaySign = degrees === 0 && minutes === 0 && seconds === 0 ? '' : sign;
|
|
1318
|
+
return `${displaySign} ${degrees}° ${padToTwo(minutes)}' ${padToTwo(seconds)}"`;
|
|
1471
1319
|
};
|
|
1472
|
-
|
|
1473
|
-
|
|
1320
|
+
const onChange = (event) => {
|
|
1321
|
+
const newValue = event.target.value;
|
|
1474
1322
|
if (newValue === '' ||
|
|
1475
1323
|
newValue === '-' ||
|
|
1476
|
-
newValue.match(RegExp(
|
|
1324
|
+
newValue.match(RegExp(`^-?[0-9]+(\\.[0-9]{0,${maxAfterDP}})?$`))) {
|
|
1477
1325
|
props.onChange && props.onChange(event);
|
|
1478
1326
|
}
|
|
1479
1327
|
else {
|
|
@@ -1483,26 +1331,26 @@ var LuiBearingInput = function (props) {
|
|
|
1483
1331
|
function padToTwo(number) {
|
|
1484
1332
|
return number <= 9 ? '0' + number : number.toString();
|
|
1485
1333
|
}
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1334
|
+
const parsedBearing = parseBearing(props.value);
|
|
1335
|
+
const internalError = validateBearing(parsedBearing);
|
|
1336
|
+
const error = props.preferValidationError
|
|
1489
1337
|
? props.validationError || internalError || null
|
|
1490
1338
|
: internalError || props.validationError || null;
|
|
1491
|
-
|
|
1339
|
+
const showError = error !== null;
|
|
1492
1340
|
props.onValidate && props.onValidate(internalError);
|
|
1493
1341
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1494
|
-
props.label && (React__default["default"].createElement(LuiFormikFormLabel, { required: !!props.required, label: props.label,
|
|
1342
|
+
props.label && (React__default["default"].createElement(LuiFormikFormLabel, { required: !!props.required, label: props.label, for: props.name, tooltip: props.tooltip })),
|
|
1495
1343
|
props.helperInfo,
|
|
1496
1344
|
React__default["default"].createElement("div", { className: clsx('lui-margin-top-xs', showError && 'lui-input-error') },
|
|
1497
1345
|
showError && (React__default["default"].createElement("i", { className: "lui-form-status-icon material-icons-round" }, "error")),
|
|
1498
1346
|
React__default["default"].createElement("div", { className: 'lui-bearing-input-wrapper' },
|
|
1499
|
-
React__default["default"].createElement("input",
|
|
1347
|
+
React__default["default"].createElement("input", { id: props.name, type: "text", disabled: props.disabled, ...props.inputProps, onChange: onChange, value: props.value }),
|
|
1500
1348
|
React__default["default"].createElement("div", { className: 'lui-bearing-display' }, formatBearing(props.value || '0'))),
|
|
1501
1349
|
showError && React__default["default"].createElement("p", null, error))));
|
|
1502
1350
|
};
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1351
|
+
const LuiBearingFormikInput = (props) => {
|
|
1352
|
+
let ctx = formik.useFormikContext();
|
|
1353
|
+
const [error, setError] = React.useState(null);
|
|
1506
1354
|
function validateBearing() {
|
|
1507
1355
|
return error;
|
|
1508
1356
|
}
|
|
@@ -1510,8 +1358,8 @@ var LuiBearingFormikInput = function (props) {
|
|
|
1510
1358
|
setError(error);
|
|
1511
1359
|
}
|
|
1512
1360
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1513
|
-
React__default["default"].createElement(formik.Field, { name: props.name, validate: validateBearing },
|
|
1514
|
-
return (React__default["default"].createElement(LuiBearingInput,
|
|
1361
|
+
React__default["default"].createElement(formik.Field, { name: props.name, validate: validateBearing }, (renderProps) => {
|
|
1362
|
+
return (React__default["default"].createElement(LuiBearingInput, { name: props.name, ...renderProps.field, validationError: formik.getIn(ctx?.errors, props.name), required: true, onValidate: onValidate, inputProps: props.inputProps, preferValidationError: props.preferValidationError }));
|
|
1515
1363
|
})));
|
|
1516
1364
|
};
|
|
1517
1365
|
|
|
@@ -1519,7 +1367,7 @@ var LinzLogoFooter = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
|
|
|
1519
1367
|
|
|
1520
1368
|
var NzGovtLogoRev = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTkwIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMTkwIDIwIj4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGlkPSJhIiBkPSJNMCAwaDE4OS41NzJ2MTkuMzEySDB6Ii8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG9wYWNpdHk9Ii43Ij4KICAgICAgICA8bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2EiLz4KICAgICAgICA8L21hc2s+CiAgICAgICAgPHBhdGggZmlsbD0iI0ZFRkVGRSIgZD0iTTgzLjEzOSAxMy44MTNIODEuMzFWNy4wMjFjMC0uOTA0LS4wODItMS4yMjYtLjMyMy0xLjU0Ny0uMi0uMjYxLS41NjItLjQwMi0xLjAyNC0uNDAyLS43MjQgMC0xLjgxLjU2My0yLjQ5MiAxLjI4NnY3LjQ1NWgtLjkzYy0uNTg2IDAtLjktLjQ0LS45LTEuMTI3VjYuMzE4YzAtMS4yMDYtLjEtMS42NjgtLjM4MS0yLjM5MmwxLjc0OS0uNDgyYy4yNC40ODIuMzQyLjkyNC4zNDIgMS41NDcuNTgyLS40ODIuODg0LS43NDMgMS4zMDYtLjk4NGEzLjczMiAzLjczMiAwIDAgMSAxLjg2OS0uNTAyYzEuMDY0IDAgMi4wMDkuNTYyIDIuMzcgMS40MjYuMTYxLjM2Mi4yNDIuODA0LjI0MiAxLjI2N3Y3LjYxNXptOC4wNTQtMi41NTJWNS45OTZjLS41MjItLjYyMy0xLjE4Ni0uOTQ0LTIuMTMtLjk0NC0uNzYzIDAtMS4zNjcuMzgxLTEuNzQ4IDEuMDI1LS4zODIuNjYyLS41MjMgMS40NjctLjUyMyAyLjc3MyAwIDEuOTUuMjQxIDIuNDkyLjc4NCAzLjA1NC4zNDEuMzYyLjgwNC41MjMgMS40ODcuNTIzIDEuMDY1IDAgMS43ODktLjU2MyAyLjEzLTEuMTY2em0yLjE1IDIuNTUyaC0xLjc2OGMtLjEtLjMwMS0uMTItLjQ0Mi0uMTgxLS45NDQtLjcwMy43NDQtMS41MjggMS4xMDUtMi41OTIgMS4xMDUtMi41NzIgMC00LjA4LTEuOTI5LTQuMDgtNS4xMDQgMC0yLjE3Ljc0NC0zLjgzOCAyLjExLTQuNzIzYTMuNDc3IDMuNDc3IDAgMCAxIDEuOTctLjU4MmMuOTY0IDAgMS43NjguMzQxIDIuNDUxIDEuMTY2IDAtLjI4Mi0uMDQtMS44MTktLjA0LTIuNTAyVi4xNDNsMS44NDkuMzAxdjkuOTk0YzAgMS42MjcuMDYgMi43NTMuMjgxIDMuMzc1ek03MS44NiA4Ljg3Yy0uMjgyLS4wMi0uNDQyLS4wNC0uNjAzLS4wNC0xLjM4NyAwLTIuMjMuMjYxLTIuNjMzLjcyMy0uMzgxLjQ0My0uNTIyLjgwNC0uNTIyIDEuNDY3IDAgMS4xMDYuNTYzIDEuNzQ5IDEuNTg4IDEuNzQ5Ljg0MyAwIDEuNjQ4LS41MjMgMi4xMS0xLjMyN2wuMDYtMi41NzJ6bTIuNjEyIDQuMTJsLS45NDQgMS4yNDVjLS42MjMtLjI0LTEuMTA2LS43NDMtMS4zNDctMS40NDctLjI2LjMyMi0xLjEwNSAxLjMyNy0yLjg1MyAxLjMyNy0yLjAxIDAtMy4yNTUtMS4wMjUtMy4yNTUtMi45NTQgMC0yLjMzMSAxLjg2OC0zLjU3NyA1LjEyNC0zLjU3Ny4yNCAwIC40NDIgMCAuNzAzLjAyVjYuOTRjMC0xLjE4Ni0uMTYtMS45OS0xLjU2Ny0xLjk5LTEuMDY1IDAtMi4yNzIuNTIzLTMuMDk1IDEuMTQ2bC0uODQ0LTEuMzI3Yy45ODUtLjU2MiAyLjI3LTEuMzI2IDQuMjItMS4zMjYgMS40NjcgMCAyLjUzMi41NDMgMi45MTQgMS42MDguMTYuNDQyLjIuNzg0LjIgMS43NjggMCAuNzI0LS4wOCAyLjI3MS0uMDggMy43MzggMCAxLjM4Ny4wNCAxLjk1LjgyNCAyLjQzMnptLTkuMTcxLjgwM2EyLjcxIDIuNzEgMCAwIDEtMS4xNDYuMjIxYy0uNzIzIDAtMS4xODYtLjIyLTEuNTY3LS43NjMtLjMwMS0uNDIyLS4zODItLjc2NC0uMzgyLTEuNzQ5VjMuMjk1YzAtMS40MjYtLjA2LTIuMTEtLjIyMS0yLjg5M0w2My45MTUgMGMuMTguNjYzLjE4IDEuNjI4LjE4IDIuODc0djguMTQ2YzAgMS4wNjUuMDYgMS4zMDYuMjYxIDEuNDg3LjEyMS4xNDEuNDAyLjIwMS42MjMuMTQxbC4zMjIgMS4xNDV6TTU4LjI2NyA4Ljg3Yy0uMjgtLjAyLS40NDItLjA0LS42MDItLjA0LTEuMzg3IDAtMi4yMy4yNjEtMi42MzMuNzIzLS4zODIuNDQzLS41MjMuODA0LS41MjMgMS40NjcgMCAxLjEwNi41NjMgMS43NDkgMS41ODggMS43NDkuODQ0IDAgMS42NDgtLjUyMyAyLjExLTEuMzI3bC4wNi0yLjU3MnptMi42MTMgNC4xMmwtLjk0NCAxLjI0NWMtLjYyMy0uMjQtMS4xMDYtLjc0My0xLjM0Ny0xLjQ0Ny0uMjYuMzIyLTEuMTA1IDEuMzI3LTIuODU0IDEuMzI3LTIuMDA5IDAtMy4yNTUtMS4wMjUtMy4yNTUtMi45NTQgMC0yLjMzMSAxLjg2OS0zLjU3NyA1LjEyNC0zLjU3Ny4yNDEgMCAuNDQzIDAgLjcwNC4wMlY2Ljk0YzAtMS4xODYtLjE2MS0xLjk5LTEuNTY4LTEuOTktMS4wNjUgMC0yLjI3LjUyMy0zLjA5NSAxLjE0NmwtLjg0My0xLjMyN2MuOTg0LS41NjIgMi4yNy0xLjMyNiA0LjIyLTEuMzI2IDEuNDY2IDAgMi41MzIuNTQzIDIuOTE0IDEuNjA4LjE2LjQ0Mi4yLjc4NC4yIDEuNzY4IDAgLjcyNC0uMDggMi4yNzEtLjA4IDMuNzM4IDAgMS4zODcuMDQgMS45NS44MjQgMi40MzJ6TTQ5LjQ2MSA3LjgwNWMwLS45NjQtLjIyLTEuNzY4LS42MjItMi4yNzFhMS44MSAxLjgxIDAgMCAwLTEuNDQ3LS43MDNjLTEuNDA3IDAtMi4xMSAxLjE0Ni0yLjExIDIuOTc0aDQuMTh6bTEuOTMgMS4zNjZoLTYuMTN2LjI0MmMwIC44NjMuMTIxIDEuNTI3LjQyMyAyLjAxLjUyMi44MDMgMS4zNDUgMS4xODUgMi4zMSAxLjE4NS45NDUgMCAxLjc0OS0uMzIyIDIuNDcyLS45NjVsLjcwNCAxLjEwNmMtLjk4Ni44NjQtMi4xNyAxLjI4NS0zLjQ3NyAxLjI4NS0yLjc5MyAwLTQuNTAyLTIuMDI5LTQuNTAyLTUuMzI0IDAtMS43NDkuMzQyLTIuODc0IDEuMjA2LTMuOS44MDQtLjk0NCAxLjc4OS0xLjM4NiAzLjAzNS0xLjM4NiAxLjEyNSAwIDIuMDMuMzYyIDIuNzMzIDEuMDg1Ljg4NC45MDUgMS4yMDUgMi4wMyAxLjIyNiA0LjM0di4zMjJ6TTMyLjY0IDMuNzQ2bC0yLjgxMyAxMC4xNDhIMjguMDRsLTEuNDY3LTUuNDg2Yy0uMTgtLjcwMy0uNjIzLTIuMzcxLS42MjMtMi4zNzFoLS4wNnMtLjQwMiAxLjcwOC0uNTQyIDIuMjVsLTEuNTA4IDUuNjA3aC0xLjc2OEwxOS4zMTggMy44MjZsMS44NjgtLjMwMSAxLjI4NyA1LjY0NmMuMjIgMS4wMDUuNTIyIDIuNDcyLjUyMiAyLjQ3MmguMDYxcy4yMi0xLjQyNi40NjItMi4yOWwxLjUyNy01LjYwN2gxLjkxTDI4LjM2IDkuMTljLjI4MSAxLjA4NS41NjIgMi4zNTIuNTYyIDIuNDUyaC4wOGMwLS4xLjMyMi0xLjcyOC40NjMtMi4zOWwxLjI0Ni01LjUwN2gxLjkzem0tMTUuODIgNC4wNmMwLS45NjUtLjIyLTEuNzctLjYyMy0yLjI3MmExLjgwNyAxLjgwNyAwIDAgMC0xLjQ0Ni0uNzAzYy0xLjQwNyAwLTIuMTEgMS4xNDYtMi4xMSAyLjk3NGg0LjE4em0xLjkzIDEuMzY1aC02LjEzdi4yNDJjMCAuODYzLjEyMSAxLjUyNy40MjMgMi4wMS41MjMuODAzIDEuMzQ2IDEuMTg1IDIuMzEgMS4xODUuOTQ1IDAgMS43NDktLjMyMiAyLjQ3Mi0uOTY1bC43MDMgMS4xMDZjLS45ODQuODY0LTIuMTcgMS4yODUtMy40NzYgMS4yODUtMi43OTMgMC00LjUwMS0yLjAyOS00LjUwMS01LjMyNCAwLTEuNzQ5LjM0MS0yLjg3NCAxLjIwNS0zLjkuODA0LS45NDQgMS43OS0xLjM4NiAzLjAzNS0xLjM4NiAxLjEyNSAwIDIuMDMuMzYyIDIuNzMzIDEuMDg1Ljg4NC45MDUgMS4yMDUgMi4wMyAxLjIyNiA0LjM0di4zMjJ6bTE3MC44MjItNS4zOTZsLS41IDEuM2gtMS45OHY2LjAzOWMwIDEuMjQuMyAxLjYyIDEuMyAxLjYyLjM0IDAgLjYyLS4wNi45MzktLjJsLjIyIDEuMTJjLS41Ni4yOC0xLjE2LjQyLTEuODIuNDItLjY2IDAtMS4zNzktLjItMS43LS41LS40MTktLjM4MS0uNzQtLjU4LS43NC0yLjA0di02LjQ2aC0xLjE5OHYtMS4zaDEuMTk5YzAtLjc3OS4wMi0xLjguMTItMi41NTlsMS45LS40NGMtLjA4LjcyLS4xOCAxLjk4LS4xOCAzaDIuNDR6bS02Ljc3NSAxMC4wMThoLTEuODJWNy4wMzVjMC0uOS0uMDgtMS4yMi0uMzE5LTEuNTQtLjItLjI2LS41Ni0uNC0xLjAyLS40LS43MiAwLTEuOC41Ni0yLjQ4IDEuMjh2Ny40MThoLTEuODJWNi4zMzRjMC0xLjItLjEtMS42NTktLjM4LTIuMzhsMS43NC0uNDc5Yy4yNC40OC4zNC45Mi4zNCAxLjU0LjU4LS40OC44OC0uNzQgMS4zLS45OC41OC0uMzQgMS4yNC0uNSAxLjg2LS41IDEuMDYgMCAxLjk5OS41NiAyLjM2IDEuNDIuMTU5LjM2LjI0LjguMjQgMS4yNnY3LjU3OHptLTEwLjk4My01Ljk3OWMwLS45Ni0uMjItMS43Ni0uNjItMi4yNi0uMzItLjQtLjgtLjctMS40NC0uNy0xLjM5OSAwLTIuMSAxLjE0LTIuMSAyLjk2aDQuMTZ6bTEuOTIgMS4zNmgtNi4xdi4yNGMwIC44Ni4xMiAxLjUyLjQyIDIgLjUyMS44IDEuMzQgMS4xOCAyLjMgMS4xOC45NCAwIDEuNzQtLjMyIDIuNDYtLjk2bC43IDEuMWMtLjk4Ljg2LTIuMTYgMS4yOC0zLjQ2IDEuMjgtMi43OCAwLTQuNDc5LTIuMDItNC40NzktNS4zIDAtMS43NC4zNC0yLjg2IDEuMi0zLjg4LjgtLjk0IDEuNzgtMS4zNzkgMy4wMi0xLjM3OSAxLjEyIDAgMi4wMi4zNiAyLjcyIDEuMDguODguOSAxLjE5OSAyLjAyIDEuMjE5IDQuMzJ2LjMxOXptLTkuNTc3IDQuNjJoLTEuODJ2LTcuMThjMC0xLjE0LS4zNi0xLjU0LTEuMi0xLjU0LS45MiAwLTEuNTguNi0yLjMzOSAxLjM2djcuMzZoLTEuOHYtNy4xNGMwLTEuMTItLjMyLTEuNTQtMS4yNC0xLjU0LS42OCAwLTEuNDQuMzQtMi4zIDEuMTZ2Ny41MmgtMS44MnYtNy4zNmMwLTEuNDItLjA4LTEuOC0uMzU5LTIuNDk5bDEuNzItLjQyYy4yLjM0LjM0Ljg0LjM0IDEuNC44Ni0uOSAxLjg4LTEuNDIgMi44MTktMS40Mi45NCAwIDEuODguNSAyLjM4IDEuNTggMS0xLjA2IDIuMDQtMS41OCAzLjA2LTEuNTggMS41NTkgMCAyLjU1OS45OCAyLjU1OSAyLjgydjcuNDc4em0tMTQuMzk3IDBoLTEuODJ2LTYuNzZjMC0uODk5LS4wOC0xLjIyLS4zMi0xLjU0LS4yLS4yNi0uNTYtLjQtMS4wMi0uNC0uNzIgMC0xLjc5OS41Ni0yLjQ4IDEuMjh2Ny40MmgtMS44MnYtNy40NmMwLTEuMi0uMDk5LTEuNjU5LS4zNzktMi4zOGwxLjc0LS40NzljLjI0LjQ4LjM0LjkyLjM0IDEuNTQuNTgtLjQ4Ljg4LS43NCAxLjMtLjk4LjU4LS4zNCAxLjI0LS41IDEuODYtLjUgMS4wNTkgMCAxLjk5OS41NiAyLjM2IDEuNDIuMTU5LjM2LjIzOS44LjIzOSAxLjI2djcuNTc4em0tOC43ODItMTAuMjM5bC0uNjQgMS44NGExLjUgMS41IDAgMCAwLS41Mi0uMWMtMS4xMiAwLTIuMDc5Ljk0LTIuMDc5IDIuMDM5djYuNDZoLTEuODR2LTcuMzZjMC0xLjIyLS4xNC0xLjg4LS4zOC0yLjQ5OWwxLjc4LS40NmMuMTguMzguMzQgMS4wNC4zNCAxLjU0di4xOGMuOC0xLjE2IDEuNjYtMS43NCAyLjcyLTEuNzQuMjQgMCAuNDYuMDQuNjIuMXptLTguNjAzIDQuMjU5YzAtLjk2LS4yMi0xLjc2LS42Mi0yLjI2LS4zMi0uNC0uOC0uNy0xLjQ0LS43LTEuMzk5IDAtMi4xIDEuMTQtMi4xIDIuOTZoNC4xNnptMS45MiAxLjM2aC02LjF2LjI0YzAgLjg2LjEyIDEuNTIuNDIxIDIgLjUyLjggMS4zNCAxLjE4IDIuMyAxLjE4LjkzOSAwIDEuNzQtLjMyIDIuNDU5LS45NmwuNyAxLjFjLS45OC44Ni0yLjE2IDEuMjgtMy40NiAxLjI4LTIuNzc5IDAtNC40NzktMi4wMi00LjQ3OS01LjMgMC0xLjc0LjM0LTIuODYgMS4yLTMuODguOC0uOTQgMS43OC0xLjM3OSAzLjAyLTEuMzc5IDEuMTIgMCAyLjAyLjM2IDIuNzE5IDEuMDguODguOSAxLjIgMi4wMiAxLjIyIDQuMzJ2LjMxOXptLTguMzczLTUuNGwtMy42NTkgMTAuMWgtMS43MmwtMy41OC0xMC4wNiAxLjktLjMgMS45OCA2LjA2Yy4yMi42OC40NCAxLjQ4LjYgMi4xNi4xNi0uNi4zNi0xLjM4LjY0LTIuMmwxLjktNS43NmgxLjk0em0tMTEuMjU4IDUuMThjMC0zLjEtLjktNC4wNC0yLjM0LTQuMDQtMS42IDAtMi4yNTkgMS4xNC0yLjI1OSAzLjY2IDAgMy4wNi43OCA0LjA4IDIuMzQgNC4wOCAxLjQgMCAyLjI2LTEuMDggMi4yNi0zLjd6bTIuMDYtLjA4YzAgMy4xOC0xLjcgNS4yLTQuMzYgNS4yLTIuNjc5IDAtNC4zNC0yLjA0LTQuMzQtNS4zIDAtMy4yNCAxLjY2MS01LjI4IDQuMy01LjI4IDIuOTYgMCA0LjQgMi4zNiA0LjQgNS4zOHptLTEwLjAyNSA0LjAyYy0xLjEyLjctMi42MiAxLjEtNC4wOCAxLjEtMS44NCAwLTMuMy0uNjItNC4zNTgtMS44Ni0xLjEtMS4yOC0xLjYtMi45LTEuNi01LjE2IDAtMS45MTMuOC00LjEwMyAyLjM4LTUuNDAzLjk5OC0uODIgMi4wOTktMS4xOCAzLjQ1OS0xLjE4IDEuNSAwIDIuODE5LjQ0IDMuODk5IDEuMzhsLS45MiAxLjJjLTEuMDItLjc0LTEuODgtMS4wNC0yLjk0LTEuMDQtMS4zMiAwLTIuMjk4LjU1Mi0yLjk1OSAxLjc2LS40ODEuODgtLjc2IDEuNzQ0LS43NiAzLjM4MyAwIDEuOS4zNCAzLjMyLjk4IDQuMTYuNi43OCAxLjc4IDEuMjQgMi45NiAxLjI0Ljc3OSAwIDEuNDgtLjIgMi4wNC0uNTJ2LTMuOTJoLTIuNTRsLS4zMi0xLjU4aDQuNzU5djYuNDR6bS02My4yMy0uMzc0bC0uNDggMS42aC04LjIxOHYtMS40OGw1LjU1OS04Ljc4MmMuMy0uNTIuNy0xLjA2Ljk4LTEuNDItLjQuMDQtLjkuMDYtMS41OC4wNmgtNC43MTlsLjQ2LTEuNmg3LjkxOHYxLjU0bC01LjQ5OSA4Ljc4M2MtLjMuNTItLjYyLjkyLS44NiAxLjMyLjQyLS4wMi44OC0uMDIgMS4zOC0uMDJoNS4wNnpNOS4xOTQgMTMuOTU3aC0yLjA2bC0zLjYyLTcuMzE5Yy0uNy0xLjQyLTEuNDE5LTIuOTgtMS42NzktMy43OGwtLjEyLjAyYy4xIDEuMTguMTQgMi41Ni4xNiAzLjg0bC4wOCA3LjIzOWgtLjc1NmMtLjg3MyAwLTEuMTg0LS44NDQtMS4xODQtMS43OTZWLjE4aDIuMjRsMy44NCA3LjU5OWMuNTggMS4xNCAxLjI2IDIuOTIgMS4zNiAzLjNsLjEyLS4wNDFjLS4wNC0uNC0uMi0yLjU4LS4yLTQuMUw3LjMzMy4xOGgxLjg2djEzLjc3OHpNMCAxOC4zNTlzMjMuOTA5LTIuNjk5IDQ2LjUyMy0yLjY5OWMyMy4xIDAgNDcuMTUgMi43IDQ3LjE1IDIuN3YuOTUycy0yNC4yMS0yLjU1OS00Ny4xNDYtMi41NTlDMjMuOTEgMTYuNzUzIDAgMTkuMzEzIDAgMTkuMzEzdi0uOTU0eiIgbWFzaz0idXJsKCNiKSIvPgogICAgPC9nPgo8L3N2Zz4=';
|
|
1521
1369
|
|
|
1522
|
-
|
|
1370
|
+
const LuiFooter = (props) => {
|
|
1523
1371
|
return (React__default["default"].createElement("footer", { className: 'lui-footer' },
|
|
1524
1372
|
React__default["default"].createElement("div", { className: 'lui-footer-columns' },
|
|
1525
1373
|
React__default["default"].createElement("h2", null, props.footerText),
|
|
@@ -25012,49 +24860,47 @@ var loaderDataChristmas = {
|
|
|
25012
24860
|
* Very trivial react wrapper for Lottie-web light. Using lottie-web directly rather than with `react-lottie` or
|
|
25013
24861
|
* `lottie-react` reduces our bundle size and enables use to use lottie-web in light mode.
|
|
25014
24862
|
*/
|
|
25015
|
-
|
|
25016
|
-
|
|
25017
|
-
|
|
25018
|
-
|
|
25019
|
-
React__default["default"].useEffect(function () {
|
|
24863
|
+
const LuiLottieLight = ({ animationData, style, rendererSettings, autoplay, loop, }) => {
|
|
24864
|
+
const element = React__default["default"].useRef(null);
|
|
24865
|
+
const lottieInstance = React__default["default"].useRef();
|
|
24866
|
+
React__default["default"].useEffect(() => {
|
|
25020
24867
|
if (element.current) {
|
|
25021
24868
|
lottieInstance.current = lottie__default["default"].loadAnimation({
|
|
25022
|
-
animationData
|
|
24869
|
+
animationData,
|
|
25023
24870
|
container: element.current,
|
|
25024
|
-
rendererSettings
|
|
25025
|
-
autoplay
|
|
25026
|
-
loop
|
|
24871
|
+
rendererSettings,
|
|
24872
|
+
autoplay,
|
|
24873
|
+
loop,
|
|
25027
24874
|
});
|
|
25028
24875
|
}
|
|
25029
|
-
return
|
|
25030
|
-
|
|
25031
|
-
(_a = lottieInstance.current) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
24876
|
+
return () => {
|
|
24877
|
+
lottieInstance.current?.destroy();
|
|
25032
24878
|
};
|
|
25033
24879
|
}, [animationData, autoplay, loop, rendererSettings]);
|
|
25034
24880
|
return React__default["default"].createElement("div", { style: style, ref: element });
|
|
25035
24881
|
};
|
|
25036
24882
|
|
|
25037
24883
|
// This prevents spinners from animating and causing diffs in chromatic
|
|
25038
|
-
|
|
25039
|
-
|
|
25040
|
-
|
|
25041
|
-
preserveAspectRatio: 'xMidYMid slice'
|
|
24884
|
+
const autoplay = !isChromatic();
|
|
24885
|
+
const style = { height: 148, width: 148 };
|
|
24886
|
+
const renderSettings = {
|
|
24887
|
+
preserveAspectRatio: 'xMidYMid slice',
|
|
25042
24888
|
};
|
|
25043
|
-
|
|
24889
|
+
const LuiLoadingSpinnerBase = (props) => {
|
|
25044
24890
|
return (React__default["default"].createElement("div", { style: {
|
|
25045
24891
|
position: 'absolute',
|
|
25046
24892
|
top: '50%',
|
|
25047
24893
|
left: '50%',
|
|
25048
24894
|
zIndex: 1000,
|
|
25049
24895
|
marginLeft: '-74px',
|
|
25050
|
-
marginTop: '-74px'
|
|
24896
|
+
marginTop: '-74px',
|
|
25051
24897
|
}, "data-testid": "loading-spinner" },
|
|
25052
24898
|
React__default["default"].createElement(LuiLottieLight, { animationData: props.animationData, loop: true, autoplay: autoplay, rendererSettings: renderSettings, style: style })));
|
|
25053
24899
|
};
|
|
25054
24900
|
/**
|
|
25055
24901
|
* A LuiSpinner with a status message beneath it.
|
|
25056
24902
|
*/
|
|
25057
|
-
|
|
24903
|
+
const LuiStatusSpinner = (props) => {
|
|
25058
24904
|
return (React__default["default"].createElement("div", { className: 'LuiStatusSpinner' },
|
|
25059
24905
|
React__default["default"].createElement(LuiLoadingSpinner, null),
|
|
25060
24906
|
React__default["default"].createElement("div", { style: {
|
|
@@ -25062,32 +24908,32 @@ var LuiStatusSpinner = function (props) {
|
|
|
25062
24908
|
top: '50%',
|
|
25063
24909
|
left: '50%',
|
|
25064
24910
|
marginLeft: '-150px',
|
|
25065
|
-
marginTop: '74px'
|
|
24911
|
+
marginTop: '74px',
|
|
25066
24912
|
} },
|
|
25067
24913
|
React__default["default"].createElement("div", { style: {
|
|
25068
24914
|
textAlign: 'center',
|
|
25069
|
-
width: '300px'
|
|
24915
|
+
width: '300px',
|
|
25070
24916
|
} }, props.children))));
|
|
25071
24917
|
};
|
|
25072
|
-
|
|
25073
|
-
return (React__default["default"].createElement("div",
|
|
24918
|
+
const LuiMiniSpinner = (props) => {
|
|
24919
|
+
return (React__default["default"].createElement("div", { ...props.divProps },
|
|
25074
24920
|
React__default["default"].createElement(LuiLottieLight, { animationData: loaderData, loop: true, autoplay: autoplay, rendererSettings: {
|
|
25075
|
-
preserveAspectRatio: 'xMidYMid slice'
|
|
24921
|
+
preserveAspectRatio: 'xMidYMid slice',
|
|
25076
24922
|
}, style: { height: props.size, width: props.size } })));
|
|
25077
24923
|
};
|
|
25078
|
-
|
|
24924
|
+
const LuiLoadingSpinner = () => {
|
|
25079
24925
|
return React__default["default"].createElement(LuiLoadingSpinnerBase, { animationData: loaderData });
|
|
25080
24926
|
};
|
|
25081
|
-
|
|
24927
|
+
const LuiLoadingSpinnerEaster = () => {
|
|
25082
24928
|
return React__default["default"].createElement(LuiLoadingSpinnerBase, { animationData: loaderDataEaster });
|
|
25083
24929
|
};
|
|
25084
|
-
|
|
24930
|
+
const LuiLoadingSpinnerChristmas = () => {
|
|
25085
24931
|
return React__default["default"].createElement(LuiLoadingSpinnerBase, { animationData: loaderDataChristmas });
|
|
25086
24932
|
};
|
|
25087
24933
|
// this function was extracted from chromatic/isChromatic. It was causing TS issues for the consumer
|
|
25088
24934
|
function isChromatic() {
|
|
25089
|
-
return !!(
|
|
25090
|
-
|
|
24935
|
+
return !!(window?.navigator.userAgent.match(/Chromatic/) ||
|
|
24936
|
+
window?.location.href.match(/chromatic=true/));
|
|
25091
24937
|
}
|
|
25092
24938
|
|
|
25093
24939
|
var css_248z$4 = ":export {\n charcoal: #2a292c;\n fuscous: #6b6966;\n gray: #989189;\n silver: #beb9b4;\n lily: #eaeaea;\n hint: #f9f9f9;\n snow: #ffffff;\n white: #ffffff;\n teal: #00425d;\n sea: #007198;\n electric: #0096cc;\n spray: #73c8e1;\n polar: #e2f3f7;\n sherpa: #004b50;\n surfie: #017a76;\n persian: #00a599;\n downy: #73cdc8;\n iceberg: #dcf5f0;\n sacramento: #004e32;\n salem: #08814d;\n pigment: #0aa245;\n granny: #9bd79b;\n panache: #e9fae7;\n brand-primary: #004b50;\n brand-secondary: #017a76;\n error: #cc0000;\n error-bg: #f5cccc;\n error-focus: #5a0000;\n warning: #ea6a2e;\n warning-bg: #fbdfd2;\n warning-focus: #b33a01;\n success: #0aa245;\n success-bg: #e9fae7;\n info: #3a7cdf;\n info-bg: #d8e5f9;\n visited: #00425d;\n green-hover: #107c3a;\n green-active: #094a22;\n green-btn: #0aa245;\n txt-link: #0096cc;\n primary-hover-btn: #005678;\n selection: #c7e9f3;\n heading-color: #017a76;\n heading-color--secondary: #2a292c;\n base-type-color: #2a292c;\n input-text: #2a292c;\n input-placeholder: #6b6966;\n input-placeholder-when-disabled: #989189;\n base-icon-color: #007198;\n disabled-color: #989189;\n disabled-color-dark: #6b6966;\n linz-color-primary: #023d48;\n linz-color-primary-hover: #01818a;\n linz-color-tertiary: #e1e44a;\n linz-color-tertiary-hover: #cdcf59;\n color-test-pink: #f09;\n linz-linear-gradient-blue: linear-gradient(70deg, #00425d 12%, #007198 100%);\n linz-linear-gradient-teal: linear-gradient(270deg, #00a599 1%, #73cdc8 100%);\n}";
|
|
@@ -25198,61 +25044,114 @@ var CreatableSelect = /*#__PURE__*/React__default["default"].forwardRef(function
|
|
|
25198
25044
|
/**
|
|
25199
25045
|
* A wrapper around React Select with Lui styling
|
|
25200
25046
|
*/
|
|
25201
|
-
|
|
25047
|
+
const LuiComboSelect = React.forwardRef(LuiComboSelectActual);
|
|
25202
25048
|
// declare the indicator in here so it gets the types from
|
|
25203
25049
|
// the function declaration
|
|
25204
|
-
|
|
25050
|
+
const LuiLoadingIndicator = () => React__default["default"].createElement(LuiMiniSpinner, { size: 25 });
|
|
25205
25051
|
function LuiComboSelectActual(givenProps, ref) {
|
|
25206
|
-
|
|
25207
|
-
noOptionsMessage:
|
|
25208
|
-
return "No options found containing '".concat(i.inputValue, "'");
|
|
25209
|
-
}
|
|
25052
|
+
const props = Object.assign({
|
|
25053
|
+
noOptionsMessage: (i) => `No options found containing '${i.inputValue}'`,
|
|
25210
25054
|
}, givenProps);
|
|
25211
|
-
props.components =
|
|
25055
|
+
props.components = {
|
|
25056
|
+
LoadingIndicator: LuiLoadingIndicator,
|
|
25057
|
+
...props.components,
|
|
25058
|
+
};
|
|
25212
25059
|
// box-shadow: "-8px 0px 0 0 #cc0000";
|
|
25213
25060
|
// border-radius: "4px";
|
|
25214
|
-
|
|
25215
|
-
|
|
25216
|
-
|
|
25061
|
+
const id = useGenerateOrDefaultId(props?.id);
|
|
25062
|
+
const selectProp = {
|
|
25063
|
+
inputId: id,
|
|
25064
|
+
...props,
|
|
25065
|
+
classNamePrefix: 'LuiComboSelect',
|
|
25066
|
+
theme: (theme) => ({
|
|
25067
|
+
...theme,
|
|
25068
|
+
colors: {
|
|
25069
|
+
...theme.colors,
|
|
25070
|
+
primary: css_248z$4['sea'],
|
|
25071
|
+
primary75: css_248z$4['electric'],
|
|
25072
|
+
primary50: css_248z$4['spray'],
|
|
25073
|
+
primary25: css_248z$4['polar'],
|
|
25074
|
+
neutral90: css_248z$4['charcoal'],
|
|
25075
|
+
neutral80: css_248z$4['charcoal'],
|
|
25076
|
+
neutral70: css_248z$4['charcoal'],
|
|
25077
|
+
neutral60: css_248z$4['fuscous'],
|
|
25078
|
+
neutral50: css_248z$4['fuscous'],
|
|
25079
|
+
neutral40: css_248z$4['gray'],
|
|
25080
|
+
neutral30: css_248z$4['gray'],
|
|
25081
|
+
neutral20: css_248z$4['silver'],
|
|
25082
|
+
neutral10: css_248z$4['lily'],
|
|
25083
|
+
neutral5: css_248z$4['hint'],
|
|
25084
|
+
danger: css_248z$4['error'],
|
|
25085
|
+
dangerLight: css_248z$4['error-bg'],
|
|
25086
|
+
},
|
|
25087
|
+
}),
|
|
25088
|
+
styles: {
|
|
25089
|
+
control: (provided, state) => ({
|
|
25090
|
+
...provided,
|
|
25217
25091
|
/* matches style of .LuiTextInput-input */
|
|
25218
|
-
boxShadow: 'none',
|
|
25219
|
-
|
|
25220
|
-
|
|
25221
|
-
|
|
25222
|
-
|
|
25223
|
-
|
|
25224
|
-
|
|
25225
|
-
|
|
25226
|
-
|
|
25227
|
-
|
|
25092
|
+
boxShadow: 'none',
|
|
25093
|
+
border: state.isFocused ? '1px solid #053d52' : '1px solid #b2b2b2',
|
|
25094
|
+
'&:hover, &:active': {
|
|
25095
|
+
borderColor: '#053d52',
|
|
25096
|
+
},
|
|
25097
|
+
}),
|
|
25098
|
+
dropdownIndicator: (provided) => ({
|
|
25099
|
+
...provided,
|
|
25100
|
+
color: css_248z$4['fuscous'],
|
|
25101
|
+
}),
|
|
25102
|
+
indicatorSeparator: (provided) => ({
|
|
25103
|
+
...provided,
|
|
25104
|
+
width: 0,
|
|
25105
|
+
}),
|
|
25106
|
+
input: (provided) => ({
|
|
25107
|
+
...provided,
|
|
25108
|
+
height: '40px',
|
|
25109
|
+
minHeight: '40px',
|
|
25110
|
+
fontWeight: 400,
|
|
25111
|
+
input: {
|
|
25112
|
+
height: '38px !important',
|
|
25113
|
+
},
|
|
25114
|
+
}),
|
|
25115
|
+
singleValue: (provided) => ({
|
|
25116
|
+
...provided,
|
|
25117
|
+
color: '#414042',
|
|
25118
|
+
fontWeight: 400,
|
|
25119
|
+
}),
|
|
25120
|
+
placeholder: (provided) => ({
|
|
25121
|
+
...provided,
|
|
25228
25122
|
/* please keep this in sync with FormVars.scss/mixin.formPlaceholder */
|
|
25229
|
-
fontWeight: 'normal',
|
|
25230
|
-
|
|
25231
|
-
|
|
25232
|
-
|
|
25233
|
-
}
|
|
25234
|
-
|
|
25123
|
+
fontWeight: 'normal',
|
|
25124
|
+
fontStyle: 'italic',
|
|
25125
|
+
color: css_248z$4['input-placeholder'],
|
|
25126
|
+
}),
|
|
25127
|
+
option: (provided, { isSelected }) => ({
|
|
25128
|
+
...provided,
|
|
25129
|
+
color: css_248z$4['input-text'],
|
|
25130
|
+
backgroundColor: isSelected ? css_248z$4['selection'] : css_248z$4['white'],
|
|
25131
|
+
}),
|
|
25132
|
+
},
|
|
25133
|
+
};
|
|
25235
25134
|
return (React__default["default"].createElement("label", { htmlFor: id, className: clsx('LuiComboSelect-label', props.error && 'hasError') },
|
|
25236
25135
|
React__default["default"].createElement("span", { className: clsx('LuiSelect-label-text', props.hideLabel ? 'LuiScreenReadersOnly' : '') }, props.label),
|
|
25237
|
-
props.isCreateable ? (React__default["default"].createElement(CreatableSelect,
|
|
25136
|
+
props.isCreateable ? (React__default["default"].createElement(CreatableSelect, { formatCreateLabel: (inputValue) => inputValue, createOptionPosition: "first", ref: ref, ...selectProp })) : (React__default["default"].createElement(Select, { ref: ref, ...selectProp })),
|
|
25238
25137
|
props.error && (React__default["default"].createElement("span", { className: "LuiComboSelect-error" },
|
|
25239
25138
|
React__default["default"].createElement(LuiIcon, { alt: 'Error', name: "ic_error", className: "LuiComboSelect-error-icon", size: "sm", status: "error" }),
|
|
25240
25139
|
props.error))));
|
|
25241
25140
|
}
|
|
25242
25141
|
|
|
25243
|
-
|
|
25142
|
+
const LuiShadow = (props) => {
|
|
25244
25143
|
return (React__default["default"].createElement("div", { className: clsx('LuiShadow', props.className) }, props.children));
|
|
25245
25144
|
};
|
|
25246
25145
|
|
|
25247
|
-
|
|
25146
|
+
const HelpInfo = (props) => (React__default["default"].createElement("div", { className: clsx('lui-small', 'HelpInfo') },
|
|
25248
25147
|
React__default["default"].createElement(LuiIcon, { name: "ic_error_outline", className: 'HelpInfo-icon', size: "sm", alt: "Extra Information" }),
|
|
25249
|
-
React__default["default"].createElement("div", { className: 'HelpInfo-info' }, props.info)));
|
|
25148
|
+
React__default["default"].createElement("div", { className: 'HelpInfo-info' }, props.info)));
|
|
25250
25149
|
|
|
25251
|
-
|
|
25150
|
+
const LuiFormSectionHeader = (props) => (React__default["default"].createElement("div", { className: "LuiFormSectionHeader" },
|
|
25252
25151
|
React__default["default"].createElement("div", { className: "LuiFormSectionHeader-header" },
|
|
25253
25152
|
React__default["default"].createElement("h3", { className: "LuiFormSectionHeader-heading" }, props.header),
|
|
25254
25153
|
props.details && React__default["default"].createElement(HelpInfo, { info: props.details })),
|
|
25255
|
-
React__default["default"].createElement(LuiShadow, { className: 'LuiFormSectionHeader-details' }, props.children)));
|
|
25154
|
+
React__default["default"].createElement(LuiShadow, { className: 'LuiFormSectionHeader-details' }, props.children)));
|
|
25256
25155
|
|
|
25257
25156
|
var logo = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIzMDBweCIgaGVpZ2h0PSI3MHB4IiB2aWV3Qm94PSIwIDAgMzAwIDcwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDAgNzA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkZGRkZGO30KCS5zdDF7ZmlsbDp1cmwoI1NWR0lEXzFfKTt9Cgkuc3Qye2ZpbGw6dXJsKCNTVkdJRF8yXyk7fQoJLnN0M3tmaWxsOnVybCgjU1ZHSURfM18pO30KCS5zdDR7ZmlsbDp1cmwoI1NWR0lEXzRfKTt9Cgkuc3Q1e2ZpbGw6dXJsKCNTVkdJRF81Xyk7fQoJLnN0NntvcGFjaXR5OjAuNDtmaWxsOnVybCgjU1ZHSURfNl8pO2VuYWJsZS1iYWNrZ3JvdW5kOm5ldyAgICA7fQo8L3N0eWxlPgoJPGcgaWQ9IkxheWVyXzJfMl8iPgoJPGcgaWQ9IlRvaXR1X0xvZ29zIj4KCQk8ZyBpZD0iQmFkZ2VfVG9pdHUiPgoJCQk8ZyBpZD0iX0dyb3VwXyI+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNOTUuOSw1LjZjLTIuMSwwLTMuOS0wLjEtNi4zLTAuMWMwLDAuNiwwLDEuNCwwLDEuOHYxMC41YzAsMS4xLDAsMy4zLDAuMSw0LjFoLTVjMC4xLTEuNCwwLjItNS4xLDAuMi03di01CgkJCQkJYzAtMS4xLDAtMy0wLjEtNC41Yy0yLjQsMC00LjQsMC02LjQsMC4xYzAuMS0xLjIsMC4xLTIuNywwLjEtNGMyLjcsMC4xLDUuNCwwLjEsOC43LDAuMXM2LjEtMC4xLDguOC0wLjEKCQkJCQlDOTYsMyw5NS45LDQuMyw5NS45LDUuNnoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMDAsMjIuNmMtMy43LDAuMS02LjktMi44LTctNi41YzAtMC4yLDAtMC4zLDAtMC41YzAtNC40LDIuOS03LjcsNy4zLTcuN2MzLjctMC4xLDYuOSwyLjgsNyw2LjUKCQkJCQljMCwwLjIsMCwwLjMsMCwwLjVDMTA3LjQsMTkuMywxMDQuNSwyMi42LDEwMCwyMi42eiBNMTAwLjMsMTEuMWMtMS44LDAtMywxLjUtMyw0YzAsMywxLjIsNC4yLDIuOSw0LjJjMS45LDAsMy0xLjUsMy00CgkJCQkJQzEwMy4yLDEyLjMsMTAxLjksMTEuMSwxMDAuMywxMS4xeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTExMS44LDUuOGMtMS4zLDAuMS0yLjQtMC45LTIuNS0yLjJjMCwwLDAtMC4xLDAtMC4xYzAtMS40LDEuMS0yLjQsMi41LTIuNGMwLDAsMC4xLDAsMC4xLDAKCQkJCQljMS4zLTAuMSwyLjQsMC45LDIuNSwyLjNjMCwwLDAsMCwwLDBjMCwxLjMtMS4xLDIuNC0yLjUsMi40QzExMS44LDUuOCwxMTEuOCw1LjgsMTExLjgsNS44eiBNMTA5LjMsMjIuMQoJCQkJCWMwLjEtMS42LDAuMi0zLjEsMC4yLTQuN3YtNC4xYzAtMS43LTAuMS0zLjctMC4yLTQuOWMxLDAsMy44LTAuMiw0LjctMC4zYy0wLjEsMC43LTAuMSwyLjEtMC4xLDMuMXY4LjFjMCwwLjksMCwxLjksMC4xLDIuOAoJCQkJCUwxMDkuMywyMi4xeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyNS40LDIxLjdjLTEsMC41LTIuMSwwLjgtMy4yLDAuOGMtMi45LDAtNC41LTEuMi00LjUtNC44di02LjVoLTIuNGwwLjctMy4xaDEuN2wwLjMtMi44bDQtMS4zdjQuMmgzLjUKCQkJCQljLTAuMSwwLjYtMC4xLDIuMS0wLjEsMy4xSDEyMnY2YzAsMS40LDAuNSwxLjgsMS41LDEuOGMwLjcsMCwxLjQtMC4yLDIuMS0wLjZMMTI1LjQsMjEuN3oiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzcuMiwyMi4xbC0wLjUtMi40Yy0wLjksMS43LTIuNywyLjgtNC43LDIuOWMtMywwLTQuNi0xLjgtNC42LTUuMnYtNC4yYzAtMS42LTAuMS0zLjQtMC4xLTQuOAoJCQkJCWMxLjYsMCwzLjMtMC4xLDQuNi0wLjJjLTAuMSwxLjEtMC4yLDIuMS0wLjEsMy4ydjQuOWMwLDIsMC41LDIuOSwyLjEsMi45YzEuNC0wLjEsMi42LTEuMiwyLjctMi43di0zLjNjMC0xLjYtMC4xLTMuNC0wLjItNC44CgkJCQkJYzEuNiwwLDMuMy0wLjEsNC43LTAuMmMtMC4xLDEuMS0wLjIsMi4xLTAuMiwzLjJ2NS45YzAsMS42LDAuMSwzLjIsMC4yLDQuOEwxMzcuMiwyMi4xeiBNMTM5LjIsNS40Yy0xLjMsMC0yLjMtMC4xLTMuNC0wLjFoLTMKCQkJCQljLTEuNCwwLTIuNCwwLTMuNCwwLjFjMC4xLTAuNywwLjEtMi4xLDAuMS0yLjljMS42LDAuMSwyLjgsMC4xLDUsMC4xYzEuNSwwLDMuMywwLDQuOS0wLjFDMTM5LjMsMy4zLDEzOS4yLDQuNCwxMzkuMiw1LjR6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTY1LjEsNS42Yy0yLjEsMC0zLjktMC4xLTYuMy0wLjFjMCwwLjYsMCwxLjQsMCwxLjh2MTAuNWMwLDEuMSwwLDMuMywwLjEsNC4xaC01YzAuMS0xLjQsMC4yLTUuMSwwLjItNwoJCQkJCXYtNWMwLTEuMSwwLTMtMC4xLTQuNWMtMi40LDAtNC40LDAtNi40LDAuMWMwLjEtMS4yLDAuMS0yLjcsMC4xLTRjMi43LDAuMSw1LjQsMC4xLDguNywwLjFzNi4xLTAuMSw4LjktMC4xCgkJCQkJQzE2NS4yLDMsMTY1LjEsNC4zLDE2NS4xLDUuNnoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNzUuMSwxNS44bC04LDAuMmMwLjEsMi4xLDEuNCwzLjIsMy43LDMuMmMxLjgsMCwzLjYtMC42LDUuMi0xLjZsLTAuMSwzLjNjLTEuNywxLjEtMy42LDEuNi01LjYsMS42CgkJCQkJYy01LDAtNy40LTMuMi03LjQtNy4xYzAtNC40LDMtNy42LDcuNC03LjZjNC40LDAsNi4yLDMsNi4yLDYuOEwxNzUuMSwxNS44eiBNMTcyLjYsMTMuOGMtMC4yLTEuOC0wLjktMi44LTIuNS0yLjgKCQkJCQljLTEuNywwLTIuNywxLjMtMywzTDE3Mi42LDEzLjh6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjA1LjgsMTYuNmMtMC45LDIuNS0xLjQsNC0xLjksNS43bC0zLDAuM2wtNC42LTEzLjNsLTIuNyw4Yy0wLjUsMS42LTEuMiwzLjMtMS44LDUuMmgtM2wtNS4xLTE0LjcKCQkJCQljLTAuNi0xLjgtMS40LTQuMS0yLjEtNS45bDUtMC4ybDQuMSwxMy42bDIuOC04LjhjMC40LTEuMiwxLjItMy42LDEuNi00LjhsMi44LTAuM2w0LjYsMTMuN2wyLjUtOC42bDEuNC00LjdoNC44TDIwNS44LDE2LjZ6IgoJCQkJLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMjAuOSwyMi4xYzAuMS0xLjIsMC4yLTMuMiwwLjItNC45VjE0YzAtMS43LTAuNC0yLjYtMS44LTIuNmMtMS42LDAtMi45LDEuMy0zLDIuOXY1YzAsMSwwLDEuOSwwLjEsMi45CgkJCQkJaC00LjZjMC4xLTEuMiwwLjItMy4xLDAuMi00Ljh2LTExYzAtMS43LTAuMS0zLjQtMC4yLTQuNmMxLTAuMSwzLjgtMC4zLDQuNi0wLjVjLTAuMSwwLjgtMC4xLDMuMy0wLjEsMy44djYKCQkJCQljMS0xLjgsMi45LTIuOSw1LTMuMWMyLjksMCw0LjIsMS44LDQuMiw0Ljl2Ni4zYzAsMSwwLjEsMi4yLDAuMSwzSDIyMC45eiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTIzOS43LDE1LjhsLTgsMC4yYzAuMSwyLjEsMS40LDMuMiwzLjcsMy4yYzEuOSwwLDMuNy0wLjYsNS4yLTEuNmwtMC4xLDMuM2MtMS43LDEuMS0zLjYsMS42LTUuNiwxLjYKCQkJCQljLTUsMC03LjQtMy4yLTcuNC03LjFjMC00LjQsMy03LjYsNy40LTcuNnM2LjIsMyw2LjIsNi44TDIzOS43LDE1Ljh6IE0yMzcuMiwxMy44Yy0wLjItMS44LTAuOS0yLjgtMi41LTIuOGMtMS43LDAtMi43LDEuMy0zLDMKCQkJCQlMMjM3LjIsMTMuOHoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNTIuMSwyMi4xYzAuMS0xLjIsMC4yLTMuMiwwLjItNC45VjE0YzAtMS43LTAuNC0yLjYtMS44LTIuNmMtMS42LDAuMS0yLjksMS4zLTMsMi45djQuOWMwLDEsMCwyLDAuMSwzCgkJCQkJSDI0M2MwLjEtMS4yLDAuMi0zLjIsMC4yLTQuOXYtNGMwLTEuNy0wLjEtMy41LTAuMi00LjhjMSwwLDMuNC0wLjMsNC4zLTAuNGwwLjIsMi45YzEtMS44LDIuOS0zLDUtMy4xYzIuOSwwLDQuMiwxLjgsNC4yLDQuOQoJCQkJCXY2LjNjMCwxLDAuMSwyLjIsMC4xLDNIMjUyLjF6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjY5LjEsMjIuMWwtMC41LTIuNGMtMC45LDEuNy0yLjcsMi44LTQuNywyLjljLTMsMC00LjUtMS44LTQuNS01LjJ2LTQuMmMwLTEuNi0wLjEtMy40LTAuMS00LjgKCQkJCQljMS42LDAsMy4zLTAuMSw0LjYtMC4yYy0wLjEsMS4xLTAuMiwyLjEtMC4xLDMuMnY0LjljMCwyLDAuNSwyLjksMi4xLDIuOWMxLjQtMC4xLDIuNi0xLjIsMi43LTIuN3YtMy4zYzAtMS42LTAuMS0zLjQtMC4yLTQuOAoJCQkJCWMxLjYsMCwzLjMtMC4xLDQuNy0wLjJjLTAuMSwxLjEtMC4yLDIuMS0wLjIsMy4ydjUuOWMwLDEuNiwwLjEsMy4yLDAuMiw0LjhMMjY5LjEsMjIuMXoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNzQuOSwxOC42YzAtMi43LDIuNC00LjYsNy4xLTQuNmMwLjMsMCwwLjcsMCwxLjEsMC4xbDAtMC40YzAuMS0xLjUtMC42LTIuMy0yLjQtMi4zCgkJCQkJYy0xLjUsMC0yLjksMC41LTQuMiwxLjNsLTAuNi0zLjJjMS43LTEsMy43LTEuNSw1LjYtMS41YzQsMCw1LjgsMS45LDUuNyw1LjVsLTAuMSw1YzAsMC44LDAuMiwxLjEsMC44LDEuMQoJCQkJCWMwLjMsMCwwLjYtMC4xLDAuOS0wLjJsLTAuMiwyLjZjLTAuNywwLjMtMS41LDAuNC0yLjMsMC41Yy0xLjQsMC0yLjYtMC42LTMtMi4zYy0wLjksMS40LTIuNSwyLjMtNC4yLDIuMwoJCQkJCUMyNzYuNSwyMi40LDI3NC45LDIxLDI3NC45LDE4LjZ6IE0yODMsMTcuM1YxNmMtMC4zLDAtMC42LTAuMS0wLjktMC4xYy0yLjMsMC0zLjIsMC45LTMuMiwyLjFjLTAuMSwwLjksMC42LDEuNiwxLjUsMS43CgkJCQkJYzAuMSwwLDAuMiwwLDAuMywwQzI4MiwxOS44LDI4Mi45LDE4LjgsMjgzLDE3LjN6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNOTMuMiw0Ni4yYy0xLjQtMC4xLTMtMC4xLTQuNy0wLjFzLTMuNCwwLTQuOSwwLjFjMC4xLTEsMC4xLTMuOCwwLjEtNS4ydi00LjdjMC0xLjQsMC00LjEtMC4xLTUuMQoJCQkJCWMwLjgsMCwyLjksMCwzLjYtMC4xYy0wLjEsMC42LTAuMSwyLjMtMC4xLDMuMXY4YzAsMC40LDAsMC44LDAsMS4yYzAuNSwwLDEuMSwwLDEuNywwYzEuNiwwLDMsMCw0LjQtMC4xCgkJCQkJQzkzLjMsNDQuMiw5My4yLDQ1LjEsOTMuMiw0Ni4yeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTk0LjMsNDMuNWMwLTIuMSwxLjctMy40LDUuMi0zLjRjMC4yLDAsMC41LDAsMC44LDB2LTAuM2MwLTEuMS0wLjQtMS43LTEuNy0xLjdjLTEuMSwwLTIuMiwwLjQtMy4xLDAuOQoJCQkJCWwtMC40LTIuNGMxLjMtMC43LDIuNy0xLjEsNC4yLTEuMWMyLjksMCw0LjMsMS40LDQuMiw0LjFsLTAuMSwzLjdjMCwwLjYsMC4yLDAuOCwwLjYsMC44YzAuMiwwLDAuNCwwLDAuNi0wLjFsLTAuMiwxLjkKCQkJCQljLTAuNSwwLjItMS4xLDAuMy0xLjcsMC4zYy0xLjEsMC4xLTItMC42LTIuMi0xLjdjLTAuNywxLjEtMS45LDEuNy0zLjEsMS43Qzk1LjYsNDYuNCw5NC4zLDQ1LjMsOTQuMyw0My41eiBNMTAwLjMsNDIuNnYtMQoJCQkJCWMtMC4yLDAtMC40LDAtMC43LDBjLTEuNywwLTIuNCwwLjctMi40LDEuNmMwLDAuNywwLjUsMS4yLDEuMSwxLjNjMC4xLDAsMC4xLDAsMC4yLDBjMC45LDAsMS43LTAuNywxLjctMS43CgkJCQkJQzEwMC4zLDQyLjcsMTAwLjMsNDIuNiwxMDAuMyw0Mi42TDEwMC4zLDQyLjZ6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTEyLjYsNDYuMWMwLjEtMC45LDAuMS0yLjQsMC4xLTMuNnYtMi40YzAtMS4yLTAuMy0yLTEuNC0yYy0xLjIsMC0yLjEsMS0yLjIsMi4xdjMuNmMwLDAuNywwLDEuNiwwLjEsMi4yCgkJCQkJaC0zLjRjMC4xLTAuOSwwLjEtMi40LDAuMS0zLjZ2LTIuOWMwLTEuMiwwLTIuNi0wLjEtMy41YzAuNywwLDIuNS0wLjIsMy4yLTAuM2wwLjIsMi4xYzAuOC0xLjQsMi4yLTIuMiwzLjgtMi4zCgkJCQkJYzIuMSwwLDMuMSwxLjQsMy4xLDMuNnY0LjdjMCwwLjcsMCwxLjYsMC4xLDIuMkgxMTIuNnoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMjQuOSwzNi4zdi0xLjljMC0xLjIsMC0yLjUtMC4xLTMuNGMwLjgtMC4xLDIuOC0wLjMsMy40LTAuNGMtMC4xLDAuNi0wLjEsMS42LTAuMSwyLjN2OS42CgkJCQkJYzAsMS4yLDAsMi42LDAuMiwzLjVoLTMuMUwxMjUsNDVjLTAuNywwLjktMS44LDEuNC0yLjksMS40Yy0yLjgsMC00LjUtMi40LTQuNS01YzAtMy4zLDIuMS01LjgsNS4xLTUuOAoJCQkJCUMxMjMuNCwzNS42LDEyNC4yLDM1LjgsMTI0LjksMzYuM3ogTTEyMC44LDQxLjFjMCwyLDEsMywyLjMsM2MwLjcsMCwxLjQtMC40LDEuOC0xdi00LjVjLTAuNS0wLjQtMS4xLTAuNy0xLjctMC42CgkJCQkJQzEyMS42LDM4LDEyMC44LDM5LjQsMTIwLjgsNDEuMXoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzUuMyw0Ni4xYzAuMS0xLDAuMi0zLjcsMC4yLTUuMXYtNC43YzAtMS40LDAtNC4xLTAuMi01LjFjMC44LDAsMywwLDMuNy0wLjFjLTAuMSwwLjYtMC4xLDIuMy0wLjEsMy4xCgkJCQkJVjQzYzAsMC44LDAsMi41LDAuMSwzLjFIMTM1LjN6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTQ4LjMsNDYuMWMwLjEtMC45LDAuMi0yLjQsMC4yLTMuNnYtMi40YzAtMS4yLTAuMy0yLTEuNC0yYy0xLjIsMC0yLjEsMS0yLjIsMi4xdjMuNmMwLDAuNywwLDEuNiwwLjEsMi4yCgkJCQkJaC0zLjRjMC4xLTAuOSwwLjEtMi40LDAuMS0zLjZ2LTIuOWMwLTEuMiwwLTIuNi0wLjEtMy41YzAuNywwLDIuNS0wLjIsMy4yLTAuM2wwLjIsMi4xYzAuOC0xLjMsMi4yLTIuMiwzLjctMi4zCgkJCQkJYzIuMSwwLDMuMSwxLjQsMy4xLDMuNnY0LjdjMCwwLjcsMCwxLjYsMC4xLDIuMkgxNDguM3oiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNjAuNCwzMy4zYy0wLjMtMC4xLTAuNi0wLjItMS0wLjJjLTEuMSwwLTEuNywwLjctMS43LDIuMXYwLjdoMi41Yy0wLjEsMC41LTAuMSwxLjUtMC4xLDIuM2gtMi40djUuOQoJCQkJCWMwLDAuNywwLDEuNCwwLjEsMi4xaC0zLjRjMC4xLTEuMiwwLjItMi4zLDAuMi0zLjV2LTQuNWgtMS44bDAuNS0yLjNoMS4zdi0wLjVjMC0yLjksMS41LTQuNyw0LjMtNC43YzAuNSwwLDAuOSwwLjEsMS40LDAuMgoJCQkJCUwxNjAuNCwzMy4zeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE2NS45LDQ2LjVjLTIuOCwwLjEtNS4xLTIuMS01LjEtNC44YzAtMC4xLDAtMC4yLDAtMC4zYzAtMy4zLDIuMi01LjcsNS40LTUuN2MyLjgtMC4xLDUuMSwyLDUuMiw0LjgKCQkJCQljMCwwLjEsMCwwLjMsMCwwLjRDMTcxLjMsNDQsMTY5LjIsNDYuNSwxNjUuOSw0Ni41eiBNMTY2LjEsMzhjLTEuMywwLTIuMiwxLjEtMi4yLDNjMCwyLjIsMC45LDMuMSwyLjEsMy4xYzEuNCwwLDIuMi0xLjEsMi4yLTMKCQkJCQlDMTY4LjIsMzguOSwxNjcuMywzOCwxNjYuMSwzOHoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNzkuNiwzOC43Yy0xLjYtMC4yLTMuNCwwLjMtMy40LDIuMXYzYzAsMC43LDAsMS42LDAuMSwyLjJoLTMuNGMwLjEtMS4yLDAuMS0yLjQsMC4xLTMuNnYtMy4xCgkJCQkJYzAtMS4xLDAtMi4yLTAuMi0zLjJjMS4xLTAuMSwyLjEtMC4yLDMuMi0wLjRsMC4yLDIuNGMwLjYtMS41LDIuMS0yLjQsMy42LTIuNUwxNzkuNiwzOC43eiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE5My44LDQ2LjFjMC4xLTEuMiwwLjEtMi40LDAuMS0zLjZ2LTIuNGMwLTEuMi0wLjMtMi0xLjMtMmMtMS4xLDAtMiwwLjktMiwxLjljMCwwLDAsMCwwLDB2My44CgkJCQkJYzAsMC43LDAsMS42LDAuMSwyLjJoLTMuNGMwLjEtMC45LDAuMS0yLjQsMC4xLTMuNnYtMi4zYzAtMS4yLTAuMi0yLTEuMi0yYy0xLjEsMC0yLDAuOS0yLDJ2My44YzAsMC43LDAsMS41LDAuMSwyLjJoLTMuNAoJCQkJCWMwLjEtMC45LDAuMS0yLjQsMC4xLTMuNnYtMi45YzAtMS4yLDAtMi42LTAuMS0zLjVjMC43LDAsMi41LTAuMiwzLjItMC4zbDAuMiwxLjljMC43LTEuMiwyLTIsMy40LTIuMWMxLjQtMC4xLDIuNiwwLjgsMi45LDIuMQoJCQkJCWMwLjctMS4zLDIuMS0yLjEsMy41LTIuMWMyLjEsMCwzLjEsMS40LDMuMSwzLjZ2NC43YzAsMC43LDAsMS41LDAuMSwyLjJMMTkzLjgsNDYuMXoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOTguNyw0My41YzAtMi4xLDEuNy0zLjQsNS4yLTMuNGMwLjIsMCwwLjUsMCwwLjgsMHYtMC4zYzAtMS4xLTAuNC0xLjctMS43LTEuN2MtMS4xLDAtMi4yLDAuNC0zLjEsMC45CgkJCQkJbC0wLjQtMi40YzEuMy0wLjcsMi43LTEuMSw0LjItMS4xYzIuOSwwLDQuMywxLjQsNC4yLDQuMWwtMC4xLDMuN2MwLDAuNiwwLjIsMC44LDAuNiwwLjhjMC4yLDAsMC40LDAsMC42LTAuMWwtMC4xLDEuOQoJCQkJCWMtMC41LDAuMi0xLjEsMC4zLTEuNywwLjNjLTEuMSwwLjEtMi0wLjYtMi4yLTEuN2MtMC43LDEuMS0xLjksMS43LTMuMSwxLjdDMTk5LjksNDYuNCwxOTguNyw0NS4zLDE5OC43LDQzLjV6IE0yMDQuNyw0Mi42di0xCgkJCQkJYy0wLjIsMC0wLjQsMC0wLjcsMGMtMS43LDAtMi40LDAuNy0yLjQsMS42YzAsMC43LDAuNSwxLjIsMS4xLDEuM2MwLjEsMCwwLjEsMCwwLjIsMGMxLDAsMS43LTAuNywxLjgtMS43CgkJCQkJQzIwNC43LDQyLjcsMjA0LjcsNDIuNiwyMDQuNyw0Mi42TDIwNC43LDQyLjZ6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjE2LjUsNDUuOGMtMC43LDAuNC0xLjUsMC42LTIuNCwwLjZjLTIuMSwwLTMuNC0wLjktMy40LTMuNXYtNC44SDIwOWwwLjUtMi4zaDEuM2wwLjItMi4xbDMtMXYzLjFoMi42CgkJCQkJYzAsMC41LTAuMSwxLjUtMC4xLDIuM0gyMTR2NC40YzAsMS4xLDAuNCwxLjMsMS4xLDEuM2MwLjUsMCwxLjEtMC4yLDEuNS0wLjVMMjE2LjUsNDUuOHoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMTkuOSwzNC4xYy0xLDAuMS0xLjgtMC42LTEuOC0xLjZjMCwwLDAsMCwwLTAuMWMwLTEsMC44LTEuOCwxLjgtMS44YzAsMCwwLDAsMC4xLDBjMSwwLDEuOCwwLjcsMS44LDEuNwoJCQkJCWMwLDAsMCwwLDAsMEMyMjEuOCwzMy4zLDIyMSwzNC4xLDIxOS45LDM0LjFDMjIwLDM0LjEsMjE5LjksMzQuMSwyMTkuOSwzNC4xeiBNMjE4LjEsNDYuMWMwLjEtMS4yLDAuMi0yLjMsMC4yLTMuNXYtMwoJCQkJCWMwLTEuMiwwLTIuNC0wLjItMy42YzAuOCwwLDIuOC0wLjEsMy40LTAuMmMtMC4xLDAuNS0wLjEsMS41LTAuMSwyLjN2NmMwLDAuNywwLDEuNCwwLjEsMi4xTDIxOC4xLDQ2LjF6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjI4LjIsNDYuNWMtMi44LDAuMS01LjEtMi4xLTUuMS00LjhjMC0wLjEsMC0wLjIsMC0wLjNjMC0zLjMsMi4yLTUuNyw1LjQtNS43YzIuNy0wLjEsNS4xLDIuMSw1LjEsNC44CgkJCQkJYzAsMC4xLDAsMC4yLDAsMC40QzIzMy42LDQ0LDIzMS41LDQ2LjUsMjI4LjIsNDYuNXogTTIyOC40LDM4Yy0xLjMsMC0yLjIsMS4xLTIuMiwzYzAsMi4yLDAuOSwzLjEsMi4xLDMuMWMxLjQsMCwyLjItMS4xLDIuMi0zCgkJCQkJQzIzMC41LDM4LjksMjI5LjYsMzgsMjI4LjQsMzh6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjQyLDQ2LjFjMC4xLTEuMiwwLjItMi40LDAuMi0zLjZ2LTIuNGMwLTEuMi0wLjMtMi0xLjMtMmMtMS4yLDAtMi4xLDEtMi4yLDIuMXYzLjZjMCwwLjcsMCwxLjUsMC4xLDIuMgoJCQkJCWgtMy40YzAuMS0wLjksMC4xLTIuNCwwLjEtMy42di0yLjljMC0xLjIsMC0yLjYtMC4xLTMuNWMwLjcsMCwyLjUtMC4yLDMuMi0wLjNsMC4yLDIuMWMwLjgtMS4zLDIuMi0yLjIsMy43LTIuMwoJCQkJCWMyLjEsMCwzLjEsMS40LDMuMSwzLjZ2NC43YzAsMC43LDAsMS42LDAuMSwyLjJIMjQyeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTgzLjcsNjIuMmwwLTQuOWMwLTEuNCwwLTQtMC4xLTVsMi4xLTAuMmw4LDkuNnYtNC4yYzAtMS40LDAtNC4xLTAuMi01LjFjMC44LDAsMi44LDAsMy41LTAuMQoJCQkJCWMtMC4xLDAuNi0wLjEsMi4zLTAuMSwzLjFMOTcsNjQuNGMwLDAuOCwwLDIuNSwwLDMuMUw5NSw2Ny43bC04LTkuNnY2LjJjMCwwLjgsMCwyLjUsMC4xLDMuMWgtMy41CgkJCQkJQzgzLjYsNjYuMyw4My43LDYzLjYsODMuNyw2Mi4yeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTEwOC4yLDYyLjhsLTUuOSwwLjJjMC4xLDEuNiwxLDIuNCwyLjcsMi40YzEuNCwwLDIuNy0wLjQsMy44LTEuMmwwLDIuNGMtMS4yLDAuOC0yLjcsMS4yLTQuMSwxLjIKCQkJCQljLTMuNywwLTUuNC0yLjQtNS40LTUuMmMwLTMuMywyLjItNS42LDUuNC01LjZjMy4yLDAsNC42LDIuMiw0LjYsNUwxMDguMiw2Mi44eiBNMTA2LjMsNjEuMmMtMC4xLTEuNC0wLjctMi4xLTEuOC0yLjEKCQkJCQlzLTIuMSwwLjktMi4yLDIuMkwxMDYuMyw2MS4yeiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTExMS45LDY0bC0xLTIuN2MtMC41LTEuMy0xLjEtMy0xLjUtMy45YzAuMywwLDIuOC0wLjIsMy4yLTAuMmwxLjksNmwwLjgtMi4zbDEuMi0zLjZsMi4xLTAuMWwyLjEsNgoJCQkJCWwwLjgtMi4zYzAuMS0wLjQsMC45LTMsMS4xLTMuNmMxLjIsMCwyLjEsMCwzLjEtMC4xbC0zLjgsMTAuM2wtMi4yLDAuMWMtMC4zLTEuMS0wLjgtMi40LTEuMy0zLjhsLTAuOC0yLjFsLTIuMSw1LjlsLTIuMywwLjEKCQkJCQlDMTEyLjgsNjYuNSwxMTIuNCw2NS4zLDExMS45LDY0eiIvPgoJCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE0My40LDUzLjhsLTgsMTAuOWgyLjZjMS44LDAsMy45LDAsNS4xLTAuMWMtMC4xLDAuOS0wLjIsMS44LTAuMiwyLjhjLTEuMy0wLjEtMy43LTAuMS01LjgtMC4xCgkJCQkJYy0yLjQsMC00LjcsMC02LjMsMC4xbC0wLjMtMS42bDgtMTAuOGgtMi4zYy0xLjksMC0zLjYsMC01LDBjMC4xLTAuOCwwLjItMS45LDAuMy0yLjhjMi4xLDAuMSwzLDAuMSw1LjgsMC4xCgkJCQkJYzIuNywwLDQuNCwwLDUuOC0wLjFMMTQzLjQsNTMuOHoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTMuMiw2Mi44bC01LjksMC4yYzAuMSwxLjYsMSwyLjQsMi43LDIuNGMxLjQsMCwyLjctMC40LDMuOC0xLjJsLTAuMSwyLjRjLTEuMiwwLjgtMi43LDEuMi00LjEsMS4yCgkJCQkJYy0zLjcsMC01LjQtMi40LTUuNC01LjJjMC0zLjMsMi4yLTUuNiw1LjQtNS42YzMuMiwwLDQuNiwyLjIsNC42LDVMMTUzLjIsNjIuOHogTTE1MS40LDYxLjJjLTAuMS0xLjQtMC43LTIuMS0xLjgtMi4xCgkJCQkJcy0yLjEsMC45LTIuMiwyLjJMMTUxLjQsNjEuMnoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNTUuMSw2NC44YzAtMi4xLDEuNy0zLjQsNS4yLTMuNGMwLjIsMCwwLjUsMCwwLjgsMHYtMC4zYzAtMS4xLTAuNC0xLjctMS43LTEuN2MtMS4xLDAtMi4yLDAuNC0zLjEsMC45CgkJCQkJbC0wLjQtMi40YzEuMy0wLjcsMi43LTEuMSw0LjItMS4xYzIuOSwwLDQuMywxLjQsNC4yLDQuMWwtMC4xLDMuN2MwLDAuNiwwLjIsMC44LDAuNiwwLjhjMC4yLDAsMC40LDAsMC42LTAuMWwtMC4yLDEuOQoJCQkJCWMtMC41LDAuMi0xLjEsMC4zLTEuNywwLjNjLTEuMSwwLjEtMi0wLjYtMi4yLTEuN2MtMC43LDEuMS0xLjksMS43LTMuMSwxLjdDMTU2LjMsNjcuNiwxNTUuMSw2Ni42LDE1NS4xLDY0Ljh6IE0xNjEuMSw2My45di0xCgkJCQkJYy0wLjIsMC0wLjUsMC0wLjcsMGMtMS43LDAtMi40LDAuNy0yLjQsMS42YzAsMC43LDAuNSwxLjIsMS4xLDEuM2MwLjEsMCwwLjEsMCwwLjIsMGMxLDAsMS43LTAuNywxLjgtMS43CgkJCQkJQzE2MS4xLDYzLjksMTYxLjEsNjMuOSwxNjEuMSw2My45TDE2MS4xLDYzLjl6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTY2LjYsNjcuNGMwLjEtMC45LDAuMS0yLjMsMC4xLTMuNnYtOC4xYzAtMS4yLDAtMi41LTAuMS0zLjRjMC43LDAsMi44LTAuMywzLjQtMC40CgkJCQkJYy0wLjEsMC42LTAuMSwyLjQtMC4xLDIuOHYxMC41YzAsMC43LDAsMS42LDAuMSwyLjFIMTY2LjZ6Ii8+CgkJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTcxLjUsNjQuOGMwLTIuMSwxLjctMy40LDUuMi0zLjRjMC4yLDAsMC41LDAsMC44LDB2LTAuM2MwLTEuMS0wLjQtMS43LTEuNy0xLjdjLTEuMSwwLTIuMiwwLjQtMy4xLDAuOQoJCQkJCWwtMC40LTIuNGMxLjMtMC43LDIuNy0xLjEsNC4yLTEuMWMyLjksMCw0LjMsMS40LDQuMiw0LjFsLTAuMSwzLjdjMCwwLjYsMC4yLDAuOCwwLjYsMC44YzAuMiwwLDAuNCwwLDAuNi0wLjFsLTAuMSwxLjkKCQkJCQljLTAuNSwwLjItMS4xLDAuMy0xLjcsMC4zYy0xLDAuMS0yLTAuNi0yLjItMS43Yy0wLjcsMS4xLTEuOCwxLjctMy4xLDEuN0MxNzIuNyw2Ny42LDE3MS41LDY2LjYsMTcxLjUsNjQuOHogTTE3Ny40LDYzLjl2LTEKCQkJCQljLTAuMiwwLTAuNCwwLTAuNywwYy0xLjcsMC0yLjQsMC43LTIuNCwxLjZjMCwwLjcsMC41LDEuMiwxLjEsMS4zYzAuMSwwLDAuMSwwLDAuMiwwYzAuOSwwLDEuNy0wLjcsMS44LTEuNwoJCQkJCUMxNzcuNCw2NCwxNzcuNCw2My45LDE3Ny40LDYzLjlMMTc3LjQsNjMuOXoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xODkuNyw2Ny40YzAuMS0xLjIsMC4yLTIuNCwwLjItMy42di0yLjRjMC0xLjItMC4zLTItMS4zLTJjLTEuMiwwLTIuMSwxLTIuMiwyLjF2My42YzAsMC43LDAsMS41LDAuMSwyLjIKCQkJCQlIMTgzYzAuMS0wLjksMC4xLTIuNCwwLjEtMy42di0yLjljMC0xLjIsMC0yLjYtMC4xLTMuNWMwLjcsMCwyLjUtMC4yLDMuMi0wLjNsMC4xLDIuMWMwLjgtMS4zLDIuMi0yLjIsMy43LTIuMwoJCQkJCWMyLjEsMCwzLjEsMS40LDMuMSwzLjZ2NC43YzAsMC43LDAsMS42LDAuMSwyLjJMMTg5LjcsNjcuNHoiLz4KCQkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMDIsNTcuNXYtMS45YzAtMS4yLDAtMi41LTAuMS0zLjRjMC44LTAuMSwyLjgtMC4zLDMuNC0wLjRjLTAuMSwwLjYtMC4xLDEuNi0wLjEsMi4zdjkuNgoJCQkJCWMwLDEuMiwwLDIuNCwwLjIsMy41aC0zLjFsLTAuMS0xLjFjLTAuNywwLjktMS44LDEuNC0yLjksMS40Yy0yLjgsMC00LjUtMi40LTQuNS01YzAtMy4zLDIuMS01LjgsNS4xLTUuOAoJCQkJCUMyMDAuNSw1Ni44LDIwMS4zLDU3LjEsMjAyLDU3LjV6IE0xOTcuOSw2Mi40YzAsMi4xLDEsMywyLjMsM2MwLjcsMCwxLjQtMC40LDEuOC0xdi00LjVjLTAuNS0wLjQtMS4xLTAuNy0xLjctMC42CgkJCQkJQzE5OC44LDU5LjIsMTk3LjksNjAuNywxOTcuOSw2Mi40TDE5Ny45LDYyLjR6Ii8+CgkJCTwvZz4KCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTczLDE1LjFjLTAuNS0xLTEuNS0xLjYtMi42LTEuN2wtMS4xLTAuMWMwLjEtMC4xLDAuMS0wLjIsMC4yLTAuNGMwLjktMS41LDAuNC0zLjQtMS4xLTQuNAoJCQkJYy0wLjQtMC4zLTAuOS0wLjQtMS40LTAuNGgtMC4yaC0wLjFoLTAuMWgtMC4yaC0wLjFMNjQuOCw4YzAtMS43LTEuMy0zLjEtMi45LTMuMmwtMC42LDBoLTAuMUM1NS40LDQuMyw0OS40LDQsNDMuNiw0CgkJCQljLTEuMywwLTMuMywwLTQuNiwwLjFsLTAuMy0wLjNjLTAuMy0wLjQtMC42LTAuOC0wLjktMS4yYy0wLjMtMC40LTAuNy0wLjgtMS4yLTFjLTAuNS0wLjMtMS0wLjQtMS42LTAuNEgzNWgtMC43bDAsMGgtMC41bDAsMAoJCQkJYy0yLjQsMC4xLTQuNiwwLjItNi45LDAuNGgtMC4yYy0yLjIsMC4yLTQuMSwwLjMtNS45LDAuNWMtMC43LDAuMS0xLjQsMC40LTEuOSwwLjljLTMsMy01LjksNy41LTguOSwxMy4ydjAuMQoJCQkJYy0wLjEsMC4xLTAuMSwwLjMtMC4yLDAuNGMtMS4xLDIuMi0yLjIsNC41LTMuMiw2LjljMCwwLDAsMCwwLDAuMUw2LjQsMjRjLTAuOSwyLjItMS44LDQuNS0yLjcsNi45bDAsMC4xbC0wLjEsMC4zbC0wLjEsMC4yCgkJCQljMCwwLDAsMC4xLDAsMC4xQzIuNywzMy44LDIsMzYsMS4zLDM4LjNjMCwwLDAsMC4xLDAsMC4xbC0wLjEsMC4zbDAsMC4xYzAsMCwwLDAuMSwwLDAuMWMtMC45LDIuOC0xLjYsNS41LTIuMSw4bDAsMFY0N3YwbDAsMC4yCgkJCQlsLTAuMSwwLjNjLTAuMywxLjcsMC44LDMuNCwyLjUsMy43YzAuMiwwLDAuNCwwLjEsMC42LDAuMWgwLjFjLTAuMSwwLjQtMC4yLDAuOC0wLjMsMS4ydjAuMWwtMC4xLDAuNmMtMC40LDEuNywwLjcsMy40LDIuNSwzLjgKCQkJCUM0LjYsNTcsNC44LDU3LDUsNTdoMC4xYy0wLjEsMC40LTAuMiwwLjgtMC4zLDEuMmMwLDAsMCwwLjEsMCwwLjF2MC4xbDAsMHYwLjFjMCwwLDAsMC4xLDAsMC4xdjAuMmMtMC40LDEuNywwLjcsMy40LDIuNSwzLjgKCQkJCWMwLjIsMCwwLjMsMC4xLDAuNSwwLjFIOGMtMC4xLDAuMy0wLjEsMC43LTAuMiwxYy0wLjMsMS43LDAuOCwzLjQsMi41LDMuN2MwLjIsMCwwLjQsMC4xLDAuNiwwLjFjMC4yLDAsMC4zLDAsMC41LDAKCQkJCWM2LjMtMC44LDEyLjYtMS4yLDE4LjktMS4yYzguMywwLDE2LjYsMC41LDI0LjgsMS41YzAuMSwwLDAuMywwLDAuNCwwYzEuNiwwLDIuOS0xLjEsMy4xLTIuN2MyLjItMTQuNyw3LjEtMzQuNywxNC40LTQ3CgkJCQlDNzMuNSwxNy4zLDczLjUsMTYuMSw3MywxNS4xeiIvPgoKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNS40MDE4IiB5MT0iNDYuMjE0MiIgeDI9IjY3LjUxNzQiIHkyPSI0LjA5MTciIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCA3MikiPgoJCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzczQzhFMSIvPgoJCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzAwNzE5OSIvPgoJCQk8L2xpbmVhckdyYWRpZW50PgoJCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNzAuMiwxNi44QzU1LjcsMTUuNiw0MiwxNS45LDMyLjMsMTdjLTkuMSw5LjMtMTguNSwzMi4xLTIxLjYsNDcuOEMyMSw2My4zLDM4LjEsNjMsNTUuNCw2NS4yCgkJCQlDNTcuNSw1MC44LDYyLjUsMjkuOSw3MC4yLDE2Ljh6Ii8+CgoJCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIyLjE2NTQiIHkxPSI1MS4zNDE5IiB4Mj0iNjMuODM1IiB5Mj0iOS42NzIzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNzIpIj4KCQkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiM3NUNCQzciLz4KCQkJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiMwMDg3ODIiLz4KCQkJPC9saW5lYXJHcmFkaWVudD4KCQkJPHBhdGggY2xhc3M9InN0MiIgZD0iTTY2LjYsMTEuNWMtMTQuNS0xLjItMjguMS0wLjktMzcuOSwwLjNjLTkuMSw5LjMtMTcuOSwzMi4zLTIxLDQ3LjljMTAuNC0xLjUsMjUuOS0yLDQyLjUtMC41CgkJCQlDNTMsNDIuOSw1OC40LDI1LjMsNjYuNiwxMS41eiIvPgoJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNy42LDU5LjlsMC4xLTAuNmMxMS40LTEuNywyNy4xLTEuOSw0Mi4yLTAuNWMzLjItMTguMiw4LjktMzQuOSwxNi4zLTQ3LjRsMC42LDAKCQkJCUM1OS40LDI0LDUzLjUsNDEuMSw1MC40LDU5LjNsMCwwLjNoLTAuMkMzNSw1OC4xLDE5LDU4LjMsNy42LDU5Ljl6Ii8+CgoJCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzNfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjE4LjcwOTQiIHkxPSI1NS4zMzA2IiB4Mj0iNTguNjkxMSIgeTI9IjE1LjM1NTgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCA3MikiPgoJCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzlERDE5QSIvPgoJCQkJPHN0b3AgIG9mZnNldD0iMC41IiBzdHlsZT0ic3RvcC1jb2xvcjojMDZBMjRBIi8+CgkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCTxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik00NS42LDMyLjRsMS41LTRsNy4xLTguMWMwLjMtMC4xLDAuNi0wLjEsMC45LTAuMUM1Ni45LDE2LDU5LDEyLDYxLjMsOC4xYy0xMy45LTEuMi0yNy0wLjktMzYuNCwwLjIKCQkJCUMxNi4zLDE3LjEsNy43LDM5LjEsNC44LDUzLjljNS40LTAuNywxMC44LTEuMiwxNi4yLTEuM2MtMC4zLTAuMi0wLjEtMS40LTAuMS0xLjVjMC40LTEuNiwxLjUtMi44LDMtNC4xYzEuNS0xLjMsMC44LTIuMSwyLTIuNgoJCQkJYzIuNS0xLjEsNC45LTIuNSw3LjEtNC4xYzIuOC0yLjEsMy44LTkuMiwzLjktOC43YzAuMSwwLjUsMS4xLDAuMywxLjEsMC43YzAsMC40LDAuMywxLjIsMC41LDEuM3MxLTIuMSwyLjktMi4yCgkJCQljMS4yLDAuMSwyLjQsMC41LDMuMywxLjNjMC4xLDAsMC44LTAuMSwwLjgtMC4xTDQ1LjYsMzIuNHoiLz4KCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTU0LjksMjEuMWwtMC41LTAuM2wwLjQtMC43YzEuOC00LjEsMy45LTguMiw2LjItMTJsMC42LDBjLTIuNCwzLjktNC41LDgtNi4zLDEyLjJMNTQuOSwyMS4xeiIvPgoJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzYuOCw3LjFjLTAuMiwwLjEsMC4xLDAuMiwwLjUsMC43YzAuNSwwLjYsMC45LDEuMywxLjIsMi4xYzAsMC40LTAuNSwwLjIsMC4xLDAuOGMwLjUsMC42LDIuMywzLjIsMi41LDMuNwoJCQkJczAuNSwwLjMsMC41LDAuMWMwLTAuMywwLjMsMC4yLDAuNCwwLjVjMCwwLjItMC4yLDAuMS0wLjIsMC4yczAuNiwwLjgsMSwyLjFjMC41LDEuNCwxLDIuMSwwLjksMy41Yy0wLjEsMS4zLTAuNCwzLjMtMS40LDMuOAoJCQkJYy0xLDAuNS0xLjksMC42LTEuOCwxLjZjMC4xLDEsMS4xLDEuMSwxLjgsMS42YzAuNywwLjUsMS44LDAuMywyLjIsMS4zcy0wLjEsMi43LTAuOCwzLjRzLTAuOSwxLjEtMC42LDEuNAoJCQkJYzAuMywwLjMsMC42LDAuMywwLjksMC4yczAuNSwwLjEsMC41LDAuNXMwLjIsMC41LDEuMy0wLjJzMS42LTIuMSwyLjUtMy4xYzAuOC0xLDEuNC0yLjEsMi0zLjJjMC4xLTAuMiwwLjEtMC4zLTAuMy0wLjQKCQkJCWMtMC40LTAuMS0wLjUtMC41LTAuNC0wLjljMCwwLDAtMC4xLDAtMC4xYzAuNC0wLjksMS4yLTEsMS45LTEuMmMwLjQtMC4xLDAuNy0wLjEsMS4xLDBjMC4zLDAuMywwLjEsMC44LDAuMiwwLjcKCQkJCWMwLjItMC4yLDAuMy0wLjQsMC40LTAuN2MwLTAuMSwwLTAuMS0wLjEtMC4yYy0wLjEsMC0wLjMtMC4zLTAuMS0wLjljMC4zLTAuOCwxLjItMC41LDEuNC0xLjljMC4zLTEuMywxLTIuMSwwLjYtMi42CgkJCQljLTAuNC0wLjUtMS4yLTAuMy0xLjktMC4xYy0wLjYsMC4zLTEuNCwxLjYtMi4zLDEuM2MtMC45LTAuMy0zLTAuOS0zLjMtMS41Yy0wLjQtMS4xLTAuNy0yLjItMC45LTMuM2MtMC4xLTAuOC0wLjctMC41LTEtMC45CgkJCQljLTAuMy0wLjQtMC41LDAuMy0wLjQsMWMwLjEsMC43LDAuOCwxLjQsMC4zLDEuN3MtMC44LTEtMS40LTEuM3MtMC45LTAuNi0wLjgtMS45YzAuMS0xLjMtMS4xLTEuNS0wLjktMi4yCgkJCQljMC4yLTAuNywwLjQtMS40LTEuMS0yLjRjLTEuNS0xLTIuMS0wLjgtMi42LTEuM2MtMC41LTAuNS0xLTAuOC0xLTEuM3MwLjQtMC43LTAuNC0wLjVDMzcuMSw3LjEsMzcsNywzNi44LDcuMXoiLz4KCQkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTQxLjIsMzYuMmMwLjMtMC4zLDAuNS0wLjcsMC42LTEuMWMwLjEtMC4yLTAuNy0wLjItMC43LTAuN2MwLTAuNiwwLjQtMS4xLDAuNC0xLjRjMC0wLjItMC4yLTAuMS0wLjMtMC4xCgkJCQljLTAuMSwwLTAuMy0wLjEtMC4zLTAuMmMtMC4xLTAuMy0wLjQtMC4zLTEtMC4xYy0wLjYsMC4yLTEuMiwxLTEuNCwwLjljLTAuMiwwLTAuNS0wLjktMC41LTEuM3MtMS4xLTAuMi0xLTAuOAoJCQkJYzAtMC4yLDAuMS0wLjQsMC4yLTAuNWMwLDAsMC4xLTAuMSwwLTAuMmMtMC44LTAuMS0xLjQsMC44LTEuOCwxLjJDMzUsMzIuMywzNiwzMy43LDM1LDM0LjVjLTEsMC44LTEuNCwwLjYtMS41LDEKCQkJCWMtMC4zLDItMS4zLDMuOC0yLjksNC45Yy0yLjcsMi4yLTQuMiwzLjUtNS40LDRzLTEuNCwyLjEtMi44LDMuNGMtMS40LDEuMy0yLjMsNC4yLTEuNSw1YzAuNiwwLjUsMS40LDAuNywyLjEsMC40CgkJCQljMC40LTAuMSwwLjgsMCwxLjEsMC4zYzAuMiwwLjMsMC45LTAuMSwxLjMsMC4zYzAuNiwwLjQsMS40LDAuNiwyLjEsMC41YzEtMC4xLDIuNy0wLjksNC4xLTMuMWMxLjQtMi4zLDEuMi00LjMsMS41LTUuMQoJCQkJYzAuNC0xLjEsMS4zLTIsMi41LTIuNGMxLjItMC4zLDEuNC0wLjUsMS44LTAuM3MxLjMsMC4zLDEuMi0wLjRzLTEuMS0wLjUtMS4xLTEuMWMwLTAuNi0wLjItMSwwLjYtMS40YzAuOC0wLjMsMS4yLTEuNCwxLjctMi4zCgkJCQlDNDAuMSwzNy4zLDQwLjcsMzcsNDEuMiwzNi4yeiIvPgoKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF80XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMC4yMzUiIHkxPSI1NC4xODQzIiB4Mj0iNDAuNDI1NCIgeTI9IjIzLjk4NyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDcyKSI+CgkJCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojOUREMTlBIi8+CgkJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojMDZBMjRBIi8+CgkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCTxwYXRoIGNsYXNzPSJzdDQiIGQ9Ik00NC41LDI4LjljLTAuMS0wLjEtMC4yLTAuMy0wLjMtMC40Yy0wLjEtMC4xLTAuMi0wLjItMC4zLTAuMmMtMC41LTAuMy0xLjItMC4zLTEuNi0wLjcKCQkJCUM0MS42LDI3LDQwLjYsMjcsNDAuNSwyNnMwLjgtMS4xLDEuOC0xLjZjMS0wLjUsMS4zLTIuNCwxLjQtMy44YzAuMS0xLjMtMC40LTIuMS0wLjktMy41Yy0wLjUtMS4yLTEtMS45LTEtMi4xczAuMiwwLDAuMi0wLjIKCQkJCWMtMC4xLTAuMy0wLjQtMC42LTAuNC0wLjVzLTAuMywwLjQtMC41LTAuMWMtMC4zLTAuNC0yLjEtMy4xLTIuNS0zLjdzLTAuMS0wLjQtMC4xLTAuOGMtMC4zLTAuOC0wLjctMS41LTEuMi0yLjEKCQkJCWMtMC4xLTAuMi0wLjMtMC4zLTAuNC0wLjVsMCwwYy0wLjEsMC0wLjEsMCwwLDBjLTAuMS0wLjEtMC4xLTAuMS0wLjEtMC4yYy0wLjQtMC45LTAuOS0xLjctMS41LTIuNWMtMC4xLTAuMS0wLjItMC4yLTAuNC0wLjMKCQkJCWMtNC45LDAuMS0xMC4yLDAuNS0xNCwwLjlDMTIuOCwxMy42LDQuOCwzMy43LDIsNDcuOWM0LjItMC42LDEzLjEtMS4zLDE5LjItMS40aDAuOGwwLjgsMGgwLjljMC41LTAuOSwwLjktMS42LDEuNi0xLjkKCQkJCWMxLjEtMC41LDIuNy0xLjgsNS40LTRjMS42LTEuMiwyLjctMywyLjktNC45YzAuMS0wLjQsMC41LTAuMiwxLjUtMWMxLTAuOCwwLTIuMywwLjQtMi43YzAuNC0wLjQsMS0xLjMsMS44LTEuMgoJCQkJYzAuMSwwLDAsMC4xLDAsMC4yYy0wLjEsMC4yLTAuMiwwLjMtMC4yLDAuNWMwLDAuNSwxLDAuMywxLDAuOGMwLDAuNCwwLjMsMS4zLDAuNSwxLjNzMC43LTAuNywxLjQtMC45bDAuMi0wLjFsMCwwCgkJCQljMC4xLDAsMC4yLTAuMSwwLjMtMC4xbDAsMGMwLjYsMCwxLjIsMC4xLDEuOCwwLjRjMC4zLDAuMiwwLjUsMC40LDAuNywwLjdjMC0wLjIsMC4yLTAuNiwwLjctMS4xQzQ0LjQsMzEuNiw0NC45LDI5LjgsNDQuNSwyOC45CgkJCQl6Ii8+CgkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMC42LDUyLjRjLTUuMywwLjEtMTAuNSwwLjYtMTUuOCwxLjNsLTAuMSwwLjZjNS40LTAuNywxMC44LTEuMSwxNi4zLTEuM2MwLDAtMC4xLTAuMS0wLjEtMC4xCgkJCQlDMjAuOCw1Mi43LDIwLjcsNTIuNSwyMC42LDUyLjR6Ii8+CgkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMy42LDQ2LjRoLTAuOWwtMC44LDBoLTAuOGMtNi4xLDAuMS0xNSwwLjgtMTkuMiwxLjR2MC4xdjAuMmwtMC4xLDAuM2M0LjEtMC42LDEzLjItMS4zLDE5LjMtMS40SDIybDEuMiwwCgkJCQljMC4xLTAuMSwwLjItMC4yLDAuMy0wLjRsMCwwTDIzLjYsNDYuNEwyMy42LDQ2LjR6Ii8+CgkJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNC4zLDU0LjVjLTAuNS0wLjItMC4zLDAuMy0wLjMsMC43YzAsMC40LTAuMiwwLjMtMC4zLDAuN2MtMC4xLDAuMy0wLjIsMC43LTAuMSwwLjlzMC4yLDAuMiwwLjUtMC4xCgkJCQljMC4zLTAuMywwLjMtMC4zLDAuNy0wLjNzMC42LTAuMSwwLjYtMC42QzI1LjIsNTUuMSwyNC44LDU0LjcsMjQuMyw1NC41eiIvPgoKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF81XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMy45ODAyIiB5MT0iNjAuMzg1MyIgeDI9IjMwLjQ0MDkiIHkyPSIzMC4wNzgzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNzIpIj4KCQkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkZGRkY7c3RvcC1vcGFjaXR5OjAuOSIvPgoJCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRkZGRjtzdG9wLW9wYWNpdHk6MC4xIi8+CgkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCTxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik03LjUsNDcuM2gwLjRjMC43LTIuNywxLjMtNS4zLDIuMS03LjdjMS45LTAuMSw0LjItMC4yLDYuNi0wLjNjLTAuNywyLjQtMS40LDQuOS0yLjEsNy42SDE1CgkJCQljMC43LTIuNywxLjMtNS4yLDIuMS03LjVjMi4xLTAuMSw0LjMtMC4yLDYuNi0wLjJjLTAuNywyLjQtMS40LDQuOS0yLjEsNy41aDAuMkgyMmMwLjYtMi42LDEuMy01LjEsMi4xLTcuNWMyLjIsMCw0LjQsMCw2LjYsMAoJCQkJYy0wLjIsMC42LTAuNCwxLjItMC41LDEuOGMwLjEtMC4xLDAuMi0wLjIsMC40LTAuM2wwLjItMC4yYzAuMS0wLjUsMC4zLTAuOSwwLjQtMS40aDAuOWMwLjEtMC4xLDAuMi0wLjMsMC4zLTAuNGgtMS4xCgkJCQljMC43LTIuNCwxLjUtNC43LDIuMy02LjlsMi4xLDBjMC4xLTAuMSwwLjItMC4yLDAuNC0wLjRjLTAuNywwLTEuNSwwLTIuMy0wLjFjMC45LTIuNSwxLjgtNC43LDIuNy02LjljMS44LDAsMy42LDAuMSw1LjQsMC4yCgkJCQljMC4yLTAuMSwwLjQtMC4yLDAuNS0wLjNjMC4xLDAsMC4xLTAuMSwwLjItMC4xYy0xLjktMC4xLTMuOS0wLjItNS45LTAuMmMxLjEtMi41LDIuMi00LjgsMy4yLTYuOWMxLDAsMi4xLDAsMy4xLDAuMWwtMC4xLTAuMgoJCQkJTDQyLjcsMTdjLTAuOSwwLTEuOC0wLjEtMi43LTAuMWMwLjQtMC44LDAuOC0xLjUsMS4yLTIuM2MtMC4xLTAuMS0wLjEtMC4xLTAuMS0wLjJMNDEsMTQuM2MtMC41LDAuOC0wLjksMS43LTEuNCwyLjYKCQkJCWMtMi4yLDAtNC40LDAtNi42LDBjMS40LTIuNywyLjctNSw0LTYuOWgxLjVjMCwwLDAtMC4xLDAtMC4xYzAtMC4xLDAtMC4yLTAuMS0wLjNoLTEuMmMwLjItMC40LDAuNS0wLjcsMC43LTEKCQkJCWMtMC4xLTAuMS0wLjItMC4yLTAuMi0wLjRjLTAuMywwLjQtMC42LDAuOS0wLjksMS40Yy0yLjMsMC00LjUsMC4xLTYuNSwwLjJjMS4yLTEuOSwyLjYtMy43LDQuMS01LjRoLTAuNQoJCQkJYy0xLjUsMS43LTIuOCwzLjUtNCw1LjRjLTIuNCwwLjEtNC42LDAuMi02LjUsMC4zYzEuMi0xLjksMi42LTMuNyw0LjEtNS41bC0wLjYsMGMtMS41LDEuNy0yLjgsMy41LTQsNS40CgkJCQljLTMsMC4yLTUuMSwwLjMtNS45LDAuNGMtMC4xLDAuMS0wLjIsMC4zLTAuMywwLjRjMC40LDAsMi42LTAuMiw1LjktMC40Yy0xLjIsMS44LTIuNSw0LjEtNCw2LjljLTMsMC4yLTUuMSwwLjQtNS45LDAuNAoJCQkJbC0wLjIsMC40YzAuNSwwLDIuNy0wLjIsNS45LTAuNGMtMS4xLDItMi4xLDQuMy0zLjIsNi44Yy0yLjgsMC4yLTQuOSwwLjMtNS44LDAuNGwtMC4yLDAuNGMwLjctMC4xLDIuOS0wLjIsNS44LTAuNAoJCQkJYy0wLjksMi4xLTEuOCw0LjQtMi43LDYuOWMtMi45LDAuMi01LDAuNC01LjcsMC40bC0wLjEsMC40YzAuNSwwLDIuNi0wLjIsNS43LTAuNGMtMC44LDIuMS0xLjUsNC40LTIuMyw2LjkKCQkJCWMtMi45LDAuMi01LDAuMy01LjcsMC40QzQsMzkuNyw0LDM5LjksNCw0MGMwLjUsMCwyLjYtMC4yLDUuNy0wLjRDOC45LDQyLDguMiw0NC41LDcuNSw0Ny4zeiBNMjMuOCwzOC41Yy0yLjMsMC00LjUsMC4xLTYuNiwwLjIKCQkJCWMwLjctMi40LDEuNS00LjcsMi4zLTYuOWMyLjEtMC4xLDQuMy0wLjIsNi42LTAuMkMyNS4zLDMzLjksMjQuNiwzNi4xLDIzLjgsMzguNXogTTI4LjksMjQuNWMtMC45LDIuMS0xLjgsNC40LTIuNyw2LjkKCQkJCWMtMi4zLDAtNC41LDAuMS02LjYsMC4yYzAuOS0yLjUsMS44LTQuNywyLjctNi45QzI0LjQsMjQuNiwyNi42LDI0LjUsMjguOSwyNC41eiBNMjIuNSwyNC4yYzEuMS0yLjUsMi4yLTQuOCwzLjMtNi45CgkJCQljMi4xLTAuMSw0LjMtMC4yLDYuNi0wLjJjLTEsMi4xLTIuMSw0LjMtMy4yLDYuOUMyNi44LDI0LjEsMjQuNiwyNC4yLDIyLjUsMjQuMnogTTMwLjksMzguNWMtMi4yLDAtNC40LDAtNi42LDAKCQkJCWMwLjctMi40LDEuNS00LjcsMi4zLTYuOWMyLjIsMCw0LjQsMCw2LjYsMEMzMi40LDMzLjgsMzEuNiwzNi4xLDMwLjksMzguNXogTTMzLjMsMzEuM2MtMi4yLDAtNC40LDAtNi42LDAKCQkJCWMwLjktMi41LDEuOC00LjcsMi43LTYuOWMyLjIsMCw0LjQsMCw2LjYsMEMzNS4xLDI2LjYsMzQuMiwyOC44LDMzLjMsMzEuM3ogTTM5LjQsMTcuMmMtMSwyLjEtMi4xLDQuMy0zLjIsNi45CgkJCQljLTIuMiwwLTQuNCwwLTYuNiwwYzEuMS0yLjUsMi4yLTQuOCwzLjItNi45QzM0LjksMTcuMiwzNy4yLDE3LjIsMzkuNCwxNy4yTDM5LjQsMTcuMnogTTI5LjksMTAuMmMyLjEtMC4xLDQuMy0wLjIsNi41LTAuMgoJCQkJYy0xLjIsMS45LTIuNSw0LjEtMy45LDYuOWMtMi4zLDAtNC41LDAuMS02LjYsMC4yQzI3LjQsMTQuMywyOC43LDEyLDI5LjksMTAuMnogTTIyLjksMTAuNWMxLjktMC4xLDQuMS0wLjIsNi42LTAuMwoJCQkJYy0xLjIsMS44LTIuNSw0LjEtNCw2LjljLTIuNCwwLjEtNC43LDAuMi02LjYsMC4zQzIwLjMsMTQuNiwyMS43LDEyLjQsMjIuOSwxMC41eiBNMTguNywxNy44YzEuOS0wLjEsNC4yLTAuMiw2LjYtMC4zCgkJCQljLTEsMi4xLTIuMSw0LjMtMy4yLDYuOWMtMi40LDAuMS00LjcsMC4yLTYuNiwwLjNDMTYuNSwyMi4xLDE3LjYsMTkuOCwxOC43LDE3Ljh6IE0xNS4zLDI1YzEuOS0wLjEsNC4yLTAuMiw2LjYtMC4zCgkJCQljLTAuOSwyLjEtMS44LDQuNC0yLjcsNi45Yy0yLjUsMC4xLTQuNywwLjItNi42LDAuM0MxMy40LDI5LjQsMTQuNCwyNy4xLDE1LjMsMjV6IE0xMi40LDMyLjNjMS45LTAuMSw0LjItMC4yLDYuNi0wLjMKCQkJCWMtMC44LDIuMS0xLjUsNC40LTIuMiw2LjhjLTIuNSwwLjEtNC43LDAuMi02LjYsMC4zQzEwLjksMzYuNywxMS42LDM0LjQsMTIuNCwzMi4zeiIvPgoKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF82XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIzOS4yOTMxIiB5MT0iNDMuMjE1NiIgeDI9IjQxLjc5MDYiIHkyPSIzOC42MDQ3IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNzIpIj4KCQkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkY3OTk7c3RvcC1vcGFjaXR5OjAuOSIvPgoJCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRjhBMztzdG9wLW9wYWNpdHk6MC4xIi8+CgkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCTxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik00MC43LDMxLjZjMC41LTEuNCwxLTIuNywxLjUtNGMtMC4xLTAuMS0wLjItMC4yLTAuMy0wLjJjLTAuNSwxLjQtMS4xLDIuNy0xLjYsNC4yYy0xLTAuMS0yLjEtMC4xLTMuMi0wLjIKCQkJCWMwLDAuMywwLjMsMC4zLDAuNiwwLjRjMC44LDAsMS42LDAuMSwyLjQsMC4xTDQwLDMyLjZINDBjMC4xLTAuMSwwLjMtMC4xLDAuNC0wLjFsMC4yLTAuNGMxLjEsMC4xLDIuMiwwLjIsMy4yLDAuMwoJCQkJYzAuMS0wLjEsMC4yLTAuMiwwLjItMC40QzQzLDMxLjgsNDEuOSwzMS43LDQwLjcsMzEuNnoiLz4KCQk8L2c+Cgk8L2c+CjwvZz4KPC9zdmc+';
|
|
25258
25157
|
|
|
@@ -25263,15 +25162,15 @@ var motif = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id
|
|
|
25263
25162
|
*
|
|
25264
25163
|
* @param onEscape the handler function
|
|
25265
25164
|
*/
|
|
25266
|
-
|
|
25267
|
-
|
|
25165
|
+
const useEscapeFunction = (onEscape) => {
|
|
25166
|
+
const escFunction = React.useCallback((event) => {
|
|
25268
25167
|
if (event.keyCode === 27) {
|
|
25269
25168
|
onEscape();
|
|
25270
25169
|
}
|
|
25271
25170
|
}, [onEscape]);
|
|
25272
|
-
React.useEffect(
|
|
25171
|
+
React.useEffect(() => {
|
|
25273
25172
|
document.addEventListener('keydown', escFunction, false);
|
|
25274
|
-
return
|
|
25173
|
+
return () => {
|
|
25275
25174
|
document.removeEventListener('keydown', escFunction, false);
|
|
25276
25175
|
};
|
|
25277
25176
|
}, [escFunction]);
|
|
@@ -25284,14 +25183,13 @@ var useEscapeFunction = function (onEscape) {
|
|
|
25284
25183
|
* @param onClickOutsideArg handler for mouse clicks outside the element
|
|
25285
25184
|
* @return a react ref which can be bound to an html element
|
|
25286
25185
|
*/
|
|
25287
|
-
|
|
25288
|
-
|
|
25289
|
-
|
|
25290
|
-
|
|
25291
|
-
React.useEffect(
|
|
25292
|
-
|
|
25293
|
-
|
|
25294
|
-
if ((_a = elementRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) {
|
|
25186
|
+
const usePageClickFunction = (onClickInsideArg, onClickOutsideArg) => {
|
|
25187
|
+
const elementRef = React.useRef(null);
|
|
25188
|
+
const onClickInside = React.useCallback(onClickInsideArg, []);
|
|
25189
|
+
const onClickOutside = React.useCallback(onClickOutsideArg, []);
|
|
25190
|
+
React.useEffect(() => {
|
|
25191
|
+
const handleClick = (e) => {
|
|
25192
|
+
if (elementRef.current?.contains(e.target)) {
|
|
25295
25193
|
onClickInside(e);
|
|
25296
25194
|
}
|
|
25297
25195
|
else {
|
|
@@ -25301,18 +25199,17 @@ var usePageClickFunction = function (onClickInsideArg, onClickOutsideArg) {
|
|
|
25301
25199
|
// add when mounted
|
|
25302
25200
|
document.addEventListener('click', handleClick);
|
|
25303
25201
|
// return function to be called when unmounted
|
|
25304
|
-
return
|
|
25202
|
+
return () => {
|
|
25305
25203
|
document.removeEventListener('click', handleClick);
|
|
25306
25204
|
};
|
|
25307
25205
|
}, [elementRef, onClickInside, onClickOutside]);
|
|
25308
25206
|
return elementRef;
|
|
25309
25207
|
};
|
|
25310
25208
|
|
|
25311
|
-
|
|
25312
|
-
|
|
25313
|
-
|
|
25314
|
-
|
|
25315
|
-
var idx = sizes.indexOf(size);
|
|
25209
|
+
const sizes = ['xs', 'sm', 'md', 'lg', 'xl'];
|
|
25210
|
+
const buildHideClassDict = ({ from = 'xs', upto = 'xl', }) => {
|
|
25211
|
+
const inRange = (size) => {
|
|
25212
|
+
const idx = sizes.indexOf(size);
|
|
25316
25213
|
return idx >= sizes.indexOf(from) && idx <= sizes.indexOf(upto);
|
|
25317
25214
|
};
|
|
25318
25215
|
return {
|
|
@@ -25320,19 +25217,18 @@ var buildHideClassDict = function (_a) {
|
|
|
25320
25217
|
'lui-hide-sm': inRange('sm'),
|
|
25321
25218
|
'lui-hide-md': inRange('md'),
|
|
25322
25219
|
'lui-hide-lg': inRange('lg'),
|
|
25323
|
-
'lui-hide-xl': inRange('xl')
|
|
25220
|
+
'lui-hide-xl': inRange('xl'),
|
|
25324
25221
|
};
|
|
25325
25222
|
};
|
|
25326
25223
|
|
|
25327
|
-
|
|
25328
|
-
|
|
25329
|
-
|
|
25330
|
-
var logoContainer = logoElement;
|
|
25224
|
+
const LuiHeader = ({ headingText, size = 'small', homeLink, transparent, children, sticky = true, }) => {
|
|
25225
|
+
const logoElement = size === 'normal' ? (React__default["default"].createElement("img", { className: "linz-logo", alt: "LINZ Logo", src: logo })) : (React__default["default"].createElement("img", { className: "linz-motif", alt: "LINZ Logo", src: motif }));
|
|
25226
|
+
let logoContainer = logoElement;
|
|
25331
25227
|
if (typeof homeLink === 'string') {
|
|
25332
25228
|
logoContainer = React__default["default"].createElement("a", { href: homeLink }, logoElement);
|
|
25333
25229
|
}
|
|
25334
25230
|
else if (typeof homeLink === 'function') {
|
|
25335
|
-
logoContainer = (React__default["default"].createElement("div", { className: "clickable", onClick:
|
|
25231
|
+
logoContainer = (React__default["default"].createElement("div", { className: "clickable", onClick: () => {
|
|
25336
25232
|
homeLink();
|
|
25337
25233
|
} }, logoElement));
|
|
25338
25234
|
}
|
|
@@ -25340,7 +25236,7 @@ var LuiHeader = function (_a) {
|
|
|
25340
25236
|
'lui-header': true,
|
|
25341
25237
|
'lui-header-transparent': transparent,
|
|
25342
25238
|
'lui-header-small': size === 'small',
|
|
25343
|
-
'lui-header-sticky': sticky
|
|
25239
|
+
'lui-header-sticky': sticky,
|
|
25344
25240
|
}) },
|
|
25345
25241
|
React__default["default"].createElement("div", { className: "lui-header-row" },
|
|
25346
25242
|
React__default["default"].createElement("div", { className: "lui-header-col" },
|
|
@@ -25354,10 +25250,9 @@ var LuiHeader = function (_a) {
|
|
|
25354
25250
|
* Note that it depends on it being rendered inside a LuiHeader for its styles to apply properly.
|
|
25355
25251
|
* To configure the item for responsiveness, ensure to set any of the hideOn* properties.
|
|
25356
25252
|
*/
|
|
25357
|
-
|
|
25358
|
-
|
|
25359
|
-
|
|
25360
|
-
var resolvedIcon = !icon && !label ? 'menu' : icon;
|
|
25253
|
+
const LuiHeaderMenuItem = React.forwardRef(({ icon, label, badge, hide, onClick, 'data-testid': dataTestId = 'menu-item', children, }, ref) => {
|
|
25254
|
+
const menuItemClasses = clsx('lui-header-menu-item', hide && buildHideClassDict(hide));
|
|
25255
|
+
const resolvedIcon = !icon && !label ? 'menu' : icon;
|
|
25361
25256
|
return (React__default["default"].createElement("div", { className: menuItemClasses, ref: ref },
|
|
25362
25257
|
React__default["default"].createElement("div", { className: clsx('lui-header-menu-icon', onClick && 'clickable'), onClick: onClick, "data-testid": dataTestId },
|
|
25363
25258
|
resolvedIcon && (React__default["default"].createElement("i", { title: "Main menu", className: "material-icons-round md-36" }, resolvedIcon)),
|
|
@@ -25365,44 +25260,38 @@ var LuiHeaderMenuItem = React.forwardRef(function (_a, ref) {
|
|
|
25365
25260
|
badge && React__default["default"].createElement("div", { className: "badge" }, badge)),
|
|
25366
25261
|
children));
|
|
25367
25262
|
});
|
|
25368
|
-
|
|
25369
|
-
isOpen:
|
|
25370
|
-
open:
|
|
25371
|
-
close:
|
|
25263
|
+
const LuiCloseableHeaderMenuContext = React.createContext({
|
|
25264
|
+
isOpen: () => false,
|
|
25265
|
+
open: () => { },
|
|
25266
|
+
close: () => { },
|
|
25372
25267
|
});
|
|
25373
|
-
|
|
25374
|
-
|
|
25375
|
-
|
|
25376
|
-
var menuDiv = usePageClickFunction(function (event) { return open || event.stopPropagation(); }, function (event) {
|
|
25268
|
+
const LuiCloseableHeaderMenuItem = ({ open, setOpen, ...props }) => {
|
|
25269
|
+
useEscapeFunction(() => setOpen(false));
|
|
25270
|
+
const menuDiv = usePageClickFunction((event) => open || event.stopPropagation(), (event) => {
|
|
25377
25271
|
if (!open) {
|
|
25378
25272
|
event.stopPropagation();
|
|
25379
25273
|
setOpen(false);
|
|
25380
25274
|
}
|
|
25381
25275
|
});
|
|
25382
|
-
|
|
25383
|
-
isOpen:
|
|
25384
|
-
open:
|
|
25385
|
-
close:
|
|
25276
|
+
const menuControls = {
|
|
25277
|
+
isOpen: () => open,
|
|
25278
|
+
open: () => setOpen(true),
|
|
25279
|
+
close: () => setOpen(false),
|
|
25386
25280
|
};
|
|
25387
|
-
|
|
25281
|
+
const menuItemProps = { onClick: () => menuControls.open(), ...props };
|
|
25388
25282
|
return (React__default["default"].createElement(LuiCloseableHeaderMenuContext.Provider, { value: menuControls },
|
|
25389
|
-
React__default["default"].createElement(LuiHeaderMenuItem,
|
|
25283
|
+
React__default["default"].createElement(LuiHeaderMenuItem, { ref: menuDiv, ...menuItemProps }, props.children)));
|
|
25390
25284
|
};
|
|
25391
|
-
|
|
25392
|
-
|
|
25393
|
-
|
|
25394
|
-
var classes = clsx('material-icons-round', 'lui-menu-close-button', hide && buildHideClassDict(hide));
|
|
25285
|
+
const LuiMenuCloseButton = ({ icon = 'close', hide, 'data-testid': dataTestId = 'close-button', }) => {
|
|
25286
|
+
const menu = React.useContext(LuiCloseableHeaderMenuContext);
|
|
25287
|
+
const classes = clsx('material-icons-round', 'lui-menu-close-button', hide && buildHideClassDict(hide));
|
|
25395
25288
|
return (React__default["default"].createElement("i", { className: classes, onClick: menu.close, "data-testid": dataTestId }, icon));
|
|
25396
25289
|
};
|
|
25397
25290
|
|
|
25398
|
-
|
|
25399
|
-
|
|
25400
|
-
|
|
25401
|
-
|
|
25402
|
-
var LuiDrawerMenuOption = function (_a) {
|
|
25403
|
-
var icon = _a.icon, label = _a.label, badge = _a.badge, _b = _a.onClick, onClick = _b === void 0 ? function () { } : _b;
|
|
25404
|
-
var menu = React.useContext(LuiCloseableHeaderMenuContext);
|
|
25405
|
-
return (React__default["default"].createElement("div", { className: "lui-menu-drawer-option", onClick: function () {
|
|
25291
|
+
const LuiDrawerMenuOptions = ({ children }) => (React__default["default"].createElement("div", { className: "lui-menu-drawer-options" }, children));
|
|
25292
|
+
const LuiDrawerMenuOption = ({ icon, label, badge, onClick = () => { }, }) => {
|
|
25293
|
+
const menu = React.useContext(LuiCloseableHeaderMenuContext);
|
|
25294
|
+
return (React__default["default"].createElement("div", { className: "lui-menu-drawer-option", onClick: () => {
|
|
25406
25295
|
menu.close();
|
|
25407
25296
|
onClick();
|
|
25408
25297
|
}, "data-testid": 'drawer-option' },
|
|
@@ -25411,12 +25300,17 @@ var LuiDrawerMenuOption = function (_a) {
|
|
|
25411
25300
|
label),
|
|
25412
25301
|
badge));
|
|
25413
25302
|
};
|
|
25414
|
-
|
|
25415
|
-
|
|
25416
|
-
|
|
25417
|
-
|
|
25418
|
-
|
|
25419
|
-
|
|
25303
|
+
const LuiDrawerMenu = ({ ...restOfProps }) => {
|
|
25304
|
+
const { children, hasStickyHeader = true, ...menuPropsCopy } = restOfProps;
|
|
25305
|
+
const [open, setOpen] = React.useState(false);
|
|
25306
|
+
const closeableMenuProps = {
|
|
25307
|
+
...menuPropsCopy,
|
|
25308
|
+
open,
|
|
25309
|
+
setOpen,
|
|
25310
|
+
icon: open ? 'close' : 'menu',
|
|
25311
|
+
onClick: () => setOpen(!open),
|
|
25312
|
+
};
|
|
25313
|
+
React.useEffect(() => {
|
|
25420
25314
|
// Support for non-sticky headers. Scroll back to top when menu is opened
|
|
25421
25315
|
if (open && !hasStickyHeader) {
|
|
25422
25316
|
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
@@ -25429,27 +25323,26 @@ var LuiDrawerMenu = function (_a) {
|
|
|
25429
25323
|
document.body.classList.remove('lui-menu-drawer-open');
|
|
25430
25324
|
}
|
|
25431
25325
|
}, [open, hasStickyHeader]);
|
|
25432
|
-
return (React__default["default"].createElement(LuiCloseableHeaderMenuItem,
|
|
25326
|
+
return (React__default["default"].createElement(LuiCloseableHeaderMenuItem, { ...closeableMenuProps },
|
|
25433
25327
|
React__default["default"].createElement("div", { className: clsx({
|
|
25434
25328
|
'lui-menu-drawer': true,
|
|
25435
|
-
'lui-menu-drawer-closed': !open
|
|
25329
|
+
'lui-menu-drawer-closed': !open,
|
|
25436
25330
|
}), "data-testid": 'drawer', "aria-hidden": !open }, children)));
|
|
25437
25331
|
};
|
|
25438
|
-
|
|
25439
|
-
|
|
25440
|
-
|
|
25441
|
-
|
|
25442
|
-
|
|
25443
|
-
return (React__default["default"].createElement(LuiCloseableHeaderMenuItem, __assign({}, closeableMenuProps),
|
|
25332
|
+
const LuiDropdownMenu = ({ ...restOfProps }) => {
|
|
25333
|
+
const { children, ...menuPropsCopy } = restOfProps;
|
|
25334
|
+
const [open, setOpen] = React.useState(false);
|
|
25335
|
+
const closeableMenuProps = { ...menuPropsCopy, open, setOpen };
|
|
25336
|
+
return (React__default["default"].createElement(LuiCloseableHeaderMenuItem, { ...closeableMenuProps },
|
|
25444
25337
|
React__default["default"].createElement("div", { className: clsx({
|
|
25445
25338
|
'lui-menu-dropdown lui-box-shadow': true,
|
|
25446
|
-
'lui-menu-dropdown-closed': !open
|
|
25339
|
+
'lui-menu-dropdown-closed': !open,
|
|
25447
25340
|
}), "data-testid": 'dropdown', "aria-hidden": !open },
|
|
25448
25341
|
children,
|
|
25449
25342
|
' ')));
|
|
25450
25343
|
};
|
|
25451
|
-
|
|
25452
|
-
|
|
25344
|
+
const LuiDrawerMenuSection = (props) => {
|
|
25345
|
+
const { children, title, collapsible } = props;
|
|
25453
25346
|
return (React__default["default"].createElement("div", null,
|
|
25454
25347
|
collapsible && (React__default["default"].createElement(LuiExpandableBanner, { label: title || '', className: "LuiDrawerMenuSection-header" }, children)),
|
|
25455
25348
|
!collapsible && (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
@@ -25458,7 +25351,7 @@ var LuiDrawerMenuSection = function (props) {
|
|
|
25458
25351
|
React__default["default"].createElement("h3", null, title)))),
|
|
25459
25352
|
children))));
|
|
25460
25353
|
};
|
|
25461
|
-
|
|
25354
|
+
const LuiDrawerMenuDivider = () => {
|
|
25462
25355
|
return React__default["default"].createElement("hr", { className: "LuiDrawerMenuDivider" });
|
|
25463
25356
|
};
|
|
25464
25357
|
|
|
@@ -27806,8 +27699,8 @@ function polyfill(Component) {
|
|
|
27806
27699
|
}
|
|
27807
27700
|
|
|
27808
27701
|
var reactLifecyclesCompat_es = /*#__PURE__*/Object.freeze({
|
|
27809
|
-
|
|
27810
|
-
|
|
27702
|
+
__proto__: null,
|
|
27703
|
+
polyfill: polyfill
|
|
27811
27704
|
});
|
|
27812
27705
|
|
|
27813
27706
|
var require$$6 = /*@__PURE__*/getAugmentedNamespace(reactLifecyclesCompat_es);
|
|
@@ -28100,30 +27993,29 @@ module.exports = exports["default"];
|
|
|
28100
27993
|
|
|
28101
27994
|
var Modal = /*@__PURE__*/getDefaultExportFromCjs(lib.exports);
|
|
28102
27995
|
|
|
28103
|
-
|
|
28104
|
-
|
|
28105
|
-
var node = React.useRef(null);
|
|
27996
|
+
const LuiUpdatesSplashModal = (props) => {
|
|
27997
|
+
const node = React.useRef(null);
|
|
28106
27998
|
// We have to do this as the CSS takes over a lot of the page
|
|
28107
27999
|
// https://medium.com/@pitipatdop/little-neat-trick-to-capture-click-outside-with-react-hook-ba77c37c7e82
|
|
28108
|
-
|
|
28000
|
+
const handleClickOutside = React.useCallback((e) => {
|
|
28109
28001
|
console.log('clicking anywhere');
|
|
28110
28002
|
// current DOES have a contains!
|
|
28111
|
-
if (
|
|
28003
|
+
if (node?.current && node.current.contains(e.target)) {
|
|
28112
28004
|
// inside click
|
|
28113
28005
|
return;
|
|
28114
28006
|
}
|
|
28115
28007
|
// outside click
|
|
28116
28008
|
props.onClose();
|
|
28117
28009
|
}, [props]);
|
|
28118
|
-
React.useEffect(
|
|
28010
|
+
React.useEffect(() => {
|
|
28119
28011
|
document.addEventListener('mousedown', handleClickOutside);
|
|
28120
|
-
return
|
|
28012
|
+
return () => {
|
|
28121
28013
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
28122
28014
|
};
|
|
28123
28015
|
}, [handleClickOutside]);
|
|
28124
28016
|
// process may be undefined, e.g. webpack 5 does not include a polyfill for it. Assume if process is undefined then
|
|
28125
28017
|
// this isn't running in a test.
|
|
28126
|
-
if (typeof process === 'undefined' ||
|
|
28018
|
+
if (typeof process === 'undefined' || process?.env?.NODE_ENV !== 'test') {
|
|
28127
28019
|
Modal.setAppElement('#root');
|
|
28128
28020
|
}
|
|
28129
28021
|
return (React__default["default"].createElement(Modal, { key: props.id, isOpen: true, shouldCloseOnOverlayClick: true, onRequestClose: props.onClose, contentLabel: "Recent updates", className: "lui-scrim", style: { overlay: { backgroundColor: 'transparent' } } },
|
|
@@ -28137,12 +28029,11 @@ var LuiUpdatesSplashModal = function (props) {
|
|
|
28137
28029
|
React__default["default"].createElement("div", { className: 'lui-feature-text' }, props.children))));
|
|
28138
28030
|
};
|
|
28139
28031
|
|
|
28140
|
-
|
|
28141
|
-
|
|
28142
|
-
|
|
28143
|
-
var handleClickOutside = React.useCallback(function (e) {
|
|
28032
|
+
const LuiModal = (props) => {
|
|
28033
|
+
const node = React.useRef(null);
|
|
28034
|
+
const handleClickOutside = React.useCallback((e) => {
|
|
28144
28035
|
// current DOES have a contains!
|
|
28145
|
-
if (
|
|
28036
|
+
if (node?.current && node.current.contains(e.target)) {
|
|
28146
28037
|
// inside click
|
|
28147
28038
|
return;
|
|
28148
28039
|
}
|
|
@@ -28151,37 +28042,37 @@ var LuiModal = function (props) {
|
|
|
28151
28042
|
props.onClose && props.onClose();
|
|
28152
28043
|
}
|
|
28153
28044
|
}, [props]);
|
|
28154
|
-
React.useEffect(
|
|
28045
|
+
React.useEffect(() => {
|
|
28155
28046
|
document.addEventListener('mousedown', handleClickOutside);
|
|
28156
|
-
return
|
|
28047
|
+
return () => {
|
|
28157
28048
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
28158
28049
|
};
|
|
28159
28050
|
}, [handleClickOutside]);
|
|
28160
|
-
|
|
28051
|
+
let isTest = false;
|
|
28161
28052
|
// this is here for the tests
|
|
28162
28053
|
if (typeof process !== 'undefined') {
|
|
28163
|
-
isTest =
|
|
28054
|
+
isTest = process?.env?.NODE_ENV === 'test';
|
|
28164
28055
|
if (!isTest) {
|
|
28165
28056
|
Modal.setAppElement('#root');
|
|
28166
28057
|
}
|
|
28167
28058
|
}
|
|
28168
|
-
return (React__default["default"].createElement(Modal,
|
|
28169
|
-
|
|
28170
|
-
|
|
28059
|
+
return (React__default["default"].createElement(Modal, { key: props.key, isOpen: true, shouldCloseOnOverlayClick: props.shouldCloseOnOverlayClick, onRequestClose: props.onClose, overlayClassName: "modal", className: props.lowContrast ? 'lui-scrim-low-contrast' : 'lui-scrim', ariaHideApp: !isTest, ...(props.appendToElement && {
|
|
28060
|
+
parentSelector: props.appendToElement,
|
|
28061
|
+
}) },
|
|
28171
28062
|
React__default["default"].createElement("div", { ref: node, className: clsx('lui-modal lui-box-shadow', props.maxWidth && 'lui-max-width', props.headingText && 'lui-modal-no-padding', props.className) },
|
|
28172
28063
|
props.headingText && (React__default["default"].createElement(LuiModalHeader, { headingText: props.headingText, onClose: props.onClose })),
|
|
28173
28064
|
React__default["default"].createElement("div", { className: clsx(props.headingText && 'lui-modal-container') }, props.children))));
|
|
28174
28065
|
};
|
|
28175
|
-
|
|
28176
|
-
|
|
28177
|
-
return (React__default["default"].createElement(LuiModal, { key: props.key, shouldCloseOnOverlayClick: props.shouldCloseOnOverlayClick, onClose: props.onClose, className: clsx(
|
|
28178
|
-
React__default["default"].createElement(LuiIcon, { name:
|
|
28066
|
+
const LuiAlertModal = (props) => {
|
|
28067
|
+
let materialIcon = getMaterialIconForLevel(props.level);
|
|
28068
|
+
return (React__default["default"].createElement(LuiModal, { key: props.key, shouldCloseOnOverlayClick: props.shouldCloseOnOverlayClick, onClose: props.onClose, className: clsx(`lui-modal-${props.level}`, props.className), appendToElement: props.appendToElement },
|
|
28069
|
+
React__default["default"].createElement(LuiIcon, { name: `ic_${materialIcon}`, alt: `${props.level} status icon`, size: "lg", className: "lui-msg-status-icon" }),
|
|
28179
28070
|
props.children));
|
|
28180
28071
|
};
|
|
28181
|
-
|
|
28072
|
+
const LuiAlertModalButtons = (props) => {
|
|
28182
28073
|
return React__default["default"].createElement("div", { className: "modal-btn-row" }, props.children);
|
|
28183
28074
|
};
|
|
28184
|
-
|
|
28075
|
+
const LuiModalHeader = (props) => {
|
|
28185
28076
|
return (React__default["default"].createElement("header", { className: "lui-modal-header" }, props.headingText && (React__default["default"].createElement("div", { className: "lui-modal-header-title" },
|
|
28186
28077
|
React__default["default"].createElement("h1", null, props.headingText),
|
|
28187
28078
|
props.onClose && (React__default["default"].createElement("button", { className: "lui-modal-header-close-btn", onClick: props.onClose },
|
|
@@ -28282,18 +28173,17 @@ function Skeleton({ count = 1, wrapper: Wrapper, className: customClassName, con
|
|
|
28282
28173
|
: elements));
|
|
28283
28174
|
}
|
|
28284
28175
|
|
|
28285
|
-
|
|
28286
|
-
|
|
28287
|
-
|
|
28288
|
-
|
|
28289
|
-
|
|
28290
|
-
return (React__default["default"].createElement("div", { className: clsx('LuiSearchInput-resultEntry', isSelected && 'selected'), key: result.id, ref: isSelected ? selectedRef : null, onClick: function () { return onClick(result.id); }, onMouseEnter: function () { return setSelectedId(result.id); } }, renderItem(result)));
|
|
28176
|
+
const SKELETON_COUNT = 3;
|
|
28177
|
+
const ResultsDisplay = ({ isLoading, onClick, children, selectedId, selectedRef, setSelectedId, results, renderItem, }) => {
|
|
28178
|
+
const ResultLine = (result) => {
|
|
28179
|
+
const isSelected = result.id === selectedId;
|
|
28180
|
+
return (React__default["default"].createElement("div", { className: clsx('LuiSearchInput-resultEntry', isSelected && 'selected'), key: result.id, ref: isSelected ? selectedRef : null, onClick: () => onClick(result.id), onMouseEnter: () => setSelectedId(result.id) }, renderItem(result)));
|
|
28291
28181
|
};
|
|
28292
|
-
|
|
28182
|
+
const GroupedResult = (result) => {
|
|
28293
28183
|
return (React__default["default"].createElement("div", null,
|
|
28294
28184
|
React__default["default"].createElement("div", { className: "LuiSearchInput-resultHeader" }, result.label),
|
|
28295
|
-
result.items.map(
|
|
28296
|
-
return React__default["default"].createElement(ResultLine,
|
|
28185
|
+
result.items.map((item) => {
|
|
28186
|
+
return React__default["default"].createElement(ResultLine, { key: item.id, ...item });
|
|
28297
28187
|
})));
|
|
28298
28188
|
};
|
|
28299
28189
|
return (React__default["default"].createElement("div", { className: "LuiSearchInput-results" },
|
|
@@ -28301,15 +28191,15 @@ var ResultsDisplay = function (_a) {
|
|
|
28301
28191
|
React__default["default"].createElement(Skeleton, { className: "LuiSearchInput-skeletonItem", count: SKELETON_COUNT }))),
|
|
28302
28192
|
!isLoading &&
|
|
28303
28193
|
isGroupedResult(results) &&
|
|
28304
|
-
results.map(
|
|
28194
|
+
results.map((result, index) => {
|
|
28305
28195
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
28306
|
-
React__default["default"].createElement(GroupedResult,
|
|
28196
|
+
React__default["default"].createElement(GroupedResult, { key: result.id, ...result }),
|
|
28307
28197
|
index !== results.length - 1 && (React__default["default"].createElement("hr", { className: "LuiSearchInput-groupSeparator" }))));
|
|
28308
28198
|
}),
|
|
28309
28199
|
!isLoading &&
|
|
28310
28200
|
!isGroupedResult(results) &&
|
|
28311
|
-
results.map(
|
|
28312
|
-
return React__default["default"].createElement(ResultLine,
|
|
28201
|
+
results.map((result) => {
|
|
28202
|
+
return React__default["default"].createElement(ResultLine, { key: result.id, ...result });
|
|
28313
28203
|
}),
|
|
28314
28204
|
children));
|
|
28315
28205
|
};
|
|
@@ -28322,36 +28212,34 @@ function isGroupedResult(result) {
|
|
|
28322
28212
|
}
|
|
28323
28213
|
function flatten(items) {
|
|
28324
28214
|
if (isGroupedResult(items)) {
|
|
28325
|
-
return items.flatMap(
|
|
28215
|
+
return items.flatMap((item) => item.items);
|
|
28326
28216
|
}
|
|
28327
28217
|
return items;
|
|
28328
28218
|
}
|
|
28329
|
-
|
|
28330
|
-
|
|
28331
|
-
|
|
28332
|
-
|
|
28333
|
-
|
|
28334
|
-
|
|
28335
|
-
|
|
28336
|
-
|
|
28219
|
+
const LuiSearchInput = (props) => {
|
|
28220
|
+
const [typedValue, setTypedValue] = React.useState(props.initialValue ? props.initialValue : '');
|
|
28221
|
+
const [results, setResults] = React.useState([]);
|
|
28222
|
+
const [selectedId, setSelectedId] = React.useState('');
|
|
28223
|
+
const [haveFocus, setHaveFocus] = React.useState(false);
|
|
28224
|
+
const [isLoading, setIsLoading] = React.useState(false);
|
|
28225
|
+
const inputRef = React.useRef(null);
|
|
28226
|
+
const selectedRef = React.useRef(null);
|
|
28337
28227
|
//set focus to inut box
|
|
28338
|
-
React.useEffect(
|
|
28339
|
-
var _a;
|
|
28228
|
+
React.useEffect(() => {
|
|
28340
28229
|
if (props.focusUpdate !== undefined)
|
|
28341
|
-
|
|
28230
|
+
inputRef.current?.focus();
|
|
28342
28231
|
}, [props.focusUpdate]);
|
|
28343
28232
|
//clear result after search types changed
|
|
28344
|
-
React.useEffect(
|
|
28233
|
+
React.useEffect(() => {
|
|
28345
28234
|
setResults([]);
|
|
28346
28235
|
}, [props.getOptions]);
|
|
28347
28236
|
function setInputValue(value) {
|
|
28348
28237
|
setTypedValue(props.inputTransformer ? props.inputTransformer(value) : value);
|
|
28349
28238
|
}
|
|
28350
28239
|
function moveDown() {
|
|
28351
|
-
|
|
28352
|
-
|
|
28353
|
-
for (
|
|
28354
|
-
var item = items_1[_i];
|
|
28240
|
+
const items = flatten(results);
|
|
28241
|
+
let takeNext = selectedId === '';
|
|
28242
|
+
for (const item of items) {
|
|
28355
28243
|
if (item.id === selectedId) {
|
|
28356
28244
|
takeNext = true;
|
|
28357
28245
|
}
|
|
@@ -28363,10 +28251,9 @@ var LuiSearchInput = function (props) {
|
|
|
28363
28251
|
return;
|
|
28364
28252
|
}
|
|
28365
28253
|
function moveUp() {
|
|
28366
|
-
|
|
28367
|
-
|
|
28368
|
-
for (
|
|
28369
|
-
var item = _a[_i];
|
|
28254
|
+
const items = flatten(results);
|
|
28255
|
+
let takeNext = false;
|
|
28256
|
+
for (const item of [...items].reverse()) {
|
|
28370
28257
|
if (item.id === selectedId) {
|
|
28371
28258
|
takeNext = true;
|
|
28372
28259
|
}
|
|
@@ -28378,42 +28265,30 @@ var LuiSearchInput = function (props) {
|
|
|
28378
28265
|
return;
|
|
28379
28266
|
}
|
|
28380
28267
|
function selectItem(itemId) {
|
|
28381
|
-
|
|
28382
|
-
|
|
28268
|
+
const id = itemId ? itemId : selectedId;
|
|
28269
|
+
const selectedItem = flatten(results).find((item) => item.id === id);
|
|
28383
28270
|
if (selectedItem) {
|
|
28384
28271
|
setHaveFocus(false);
|
|
28385
28272
|
setInputValue(selectedItem.description);
|
|
28386
28273
|
props.onSelectOption(selectedItem);
|
|
28387
28274
|
}
|
|
28388
28275
|
}
|
|
28389
|
-
function retrieveResults(input) {
|
|
28390
|
-
|
|
28391
|
-
|
|
28392
|
-
|
|
28393
|
-
|
|
28394
|
-
|
|
28395
|
-
|
|
28396
|
-
|
|
28397
|
-
|
|
28398
|
-
|
|
28399
|
-
_a.trys.push([1, , 3, 4]);
|
|
28400
|
-
return [4 /*yield*/, props.getOptions(input)];
|
|
28401
|
-
case 2:
|
|
28402
|
-
results_1 = _a.sent();
|
|
28403
|
-
items = flatten(results_1);
|
|
28404
|
-
setResults(results_1);
|
|
28405
|
-
selectedIdInResults = items.some(function (item) { return item.id === selectedId; });
|
|
28406
|
-
if (!selectedIdInResults) {
|
|
28407
|
-
setSelectedId(items.length ? items[0].id : '');
|
|
28408
|
-
}
|
|
28409
|
-
return [3 /*break*/, 4];
|
|
28410
|
-
case 3:
|
|
28411
|
-
setIsLoading(false);
|
|
28412
|
-
return [7 /*endfinally*/];
|
|
28413
|
-
case 4: return [2 /*return*/];
|
|
28276
|
+
async function retrieveResults(input) {
|
|
28277
|
+
if (input !== '' && input.length >= props.minCharactersForSearch) {
|
|
28278
|
+
setIsLoading(true);
|
|
28279
|
+
try {
|
|
28280
|
+
const results = await props.getOptions(input);
|
|
28281
|
+
const items = flatten(results);
|
|
28282
|
+
setResults(results);
|
|
28283
|
+
const selectedIdInResults = items.some((item) => item.id === selectedId);
|
|
28284
|
+
if (!selectedIdInResults) {
|
|
28285
|
+
setSelectedId(items.length ? items[0].id : '');
|
|
28414
28286
|
}
|
|
28415
|
-
}
|
|
28416
|
-
|
|
28287
|
+
}
|
|
28288
|
+
finally {
|
|
28289
|
+
setIsLoading(false);
|
|
28290
|
+
}
|
|
28291
|
+
}
|
|
28417
28292
|
}
|
|
28418
28293
|
function handleKeyDown(event) {
|
|
28419
28294
|
switch (event.key) {
|
|
@@ -28436,19 +28311,19 @@ var LuiSearchInput = function (props) {
|
|
|
28436
28311
|
}
|
|
28437
28312
|
function scrollToViewSelected(topOfView) {
|
|
28438
28313
|
// Wait for ref to update before scrolling to it
|
|
28439
|
-
setTimeout(
|
|
28314
|
+
setTimeout(() => selectedRef.current?.scrollIntoView(topOfView), 0);
|
|
28440
28315
|
}
|
|
28441
|
-
React.useEffect(
|
|
28316
|
+
React.useEffect(() => {
|
|
28442
28317
|
retrieveResults(typedValue);
|
|
28443
28318
|
}, [typedValue]);
|
|
28444
|
-
|
|
28445
|
-
onClick:
|
|
28319
|
+
const cancelIcon = typedValue !== '' ? (React__default["default"].createElement(LuiIcon, { alt: "clear", name: "ic_cancel_clear", size: "md", className: 'LuiSearchInput-iconPosition', spanProps: {
|
|
28320
|
+
onClick: () => {
|
|
28446
28321
|
setInputValue('');
|
|
28447
28322
|
setResults([]);
|
|
28448
|
-
}
|
|
28323
|
+
},
|
|
28449
28324
|
} })) : null;
|
|
28450
|
-
|
|
28451
|
-
|
|
28325
|
+
const searchIcon = (React__default["default"].createElement(LuiIcon, { className: 'LuiSearchInput-startIconPosition', name: "ic_search", size: "md", alt: "search", spanProps: { onClick: () => inputRef.current?.focus() } }));
|
|
28326
|
+
const typeMore = 'You need to type a few more characters';
|
|
28452
28327
|
function enoughChars(input) {
|
|
28453
28328
|
if (typeof props.minCharactersForSearch === 'number')
|
|
28454
28329
|
return input.length >= props.minCharactersForSearch;
|
|
@@ -28463,20 +28338,20 @@ var LuiSearchInput = function (props) {
|
|
|
28463
28338
|
return typeMore;
|
|
28464
28339
|
}
|
|
28465
28340
|
if (props.name)
|
|
28466
|
-
return
|
|
28341
|
+
return `The ${props.name} could not be displayed or does not exist.`;
|
|
28467
28342
|
else
|
|
28468
28343
|
return null;
|
|
28469
28344
|
}
|
|
28470
28345
|
return (React__default["default"].createElement("div", { className: "LuiSearchInput" },
|
|
28471
28346
|
React__default["default"].createElement("span", { className: "LuiSearchInput-inputWrapper" },
|
|
28472
28347
|
searchIcon,
|
|
28473
|
-
React__default["default"].createElement("input", { type: "text", className: clsx('LuiSearchInput-input'), ref: inputRef, value: typedValue, placeholder: props.placeholderText, "aria-label": "Search", onChange:
|
|
28348
|
+
React__default["default"].createElement("input", { type: "text", className: clsx('LuiSearchInput-input'), ref: inputRef, value: typedValue, placeholder: props.placeholderText, "aria-label": "Search", onChange: (e) => setInputValue(e.target.value), onKeyDown: handleKeyDown, onFocus: (e) => {
|
|
28474
28349
|
e.target.select();
|
|
28475
28350
|
retrieveResults(typedValue);
|
|
28476
28351
|
setHaveFocus(true);
|
|
28477
28352
|
},
|
|
28478
28353
|
// This timeout could be a little brittle but allows the menu to stay open long enough to click it
|
|
28479
|
-
onBlur:
|
|
28354
|
+
onBlur: () => setTimeout(() => setHaveFocus(false), 200) }),
|
|
28480
28355
|
cancelIcon),
|
|
28481
28356
|
(isLoading || results.length > 0) && haveFocus && (React__default["default"].createElement("div", null,
|
|
28482
28357
|
React__default["default"].createElement(ResultsDisplay, { results: results, selectedId: selectedId, setSelectedId: setSelectedId, selectedRef: selectedRef, onClick: selectItem, isLoading: isLoading, renderItem: props.renderItem }))),
|
|
@@ -28492,43 +28367,33 @@ var LuiSearchInput = function (props) {
|
|
|
28492
28367
|
React__default["default"].createElement("div", { "data-testid": "disclaimer", className: "LuiSearchInput-disclaimer" }, props.disclaimer)))));
|
|
28493
28368
|
};
|
|
28494
28369
|
|
|
28495
|
-
|
|
28370
|
+
const resultStyle$1 = { verticalAlign: 'middle' };
|
|
28496
28371
|
/**
|
|
28497
28372
|
* LuiSearchBox is a search input with select menu.
|
|
28498
28373
|
* The options of the menu and input can be passed in as an array.
|
|
28499
28374
|
* See examples in SearchBox in storybook.
|
|
28500
28375
|
*/
|
|
28501
|
-
|
|
28502
|
-
|
|
28503
|
-
|
|
28504
|
-
var value = _a.value;
|
|
28505
|
-
return value === initOptionValue;
|
|
28506
|
-
});
|
|
28507
|
-
var _b = React.useState(initOption ? initOption : searchBoxOptions[0]), selectedMenuOption = _b[0], setSelectedMenuOption = _b[1];
|
|
28376
|
+
const LuiSearchBox = ({ searchBoxOptions, initOptionValue, onMenuSelect, autoFocus, }) => {
|
|
28377
|
+
const initOption = searchBoxOptions.find(({ value }) => value === initOptionValue);
|
|
28378
|
+
const [selectedMenuOption, setSelectedMenuOption,] = React.useState(initOption ? initOption : searchBoxOptions[0]);
|
|
28508
28379
|
//auto focus every time select a menu item
|
|
28509
|
-
|
|
28380
|
+
const [focusUpdate, setFocusUpdate] = React.useState(false);
|
|
28510
28381
|
//don't focus when first time display
|
|
28511
|
-
|
|
28512
|
-
React.useEffect(
|
|
28513
|
-
|
|
28514
|
-
var value = _a.value;
|
|
28515
|
-
return value === initOptionValue;
|
|
28516
|
-
});
|
|
28382
|
+
const [isFocus, setIsFocus] = React.useState(false);
|
|
28383
|
+
React.useEffect(() => {
|
|
28384
|
+
const updatedOption = searchBoxOptions.find(({ value }) => value === initOptionValue);
|
|
28517
28385
|
if (updatedOption)
|
|
28518
28386
|
setSelectedMenuOption(updatedOption);
|
|
28519
28387
|
}, [initOptionValue]);
|
|
28520
|
-
|
|
28388
|
+
const handleMenuSelected = (e) => {
|
|
28521
28389
|
setSelectedMenuOption(findSelectedOption(e.value));
|
|
28522
28390
|
if (onMenuSelect !== undefined)
|
|
28523
28391
|
onMenuSelect(e);
|
|
28524
28392
|
setIsFocus(true);
|
|
28525
28393
|
setFocusUpdate(!focusUpdate);
|
|
28526
28394
|
};
|
|
28527
|
-
|
|
28528
|
-
|
|
28529
|
-
var value = _a.value;
|
|
28530
|
-
return value === v;
|
|
28531
|
-
});
|
|
28395
|
+
const findSelectedOption = (v) => {
|
|
28396
|
+
const selectedOption = searchBoxOptions.find(({ value }) => value === v);
|
|
28532
28397
|
return selectedOption ? selectedOption : searchBoxOptions[0];
|
|
28533
28398
|
};
|
|
28534
28399
|
return (React__default["default"].createElement("div", { className: "LuiSearchBox" },
|
|
@@ -28536,53 +28401,53 @@ var LuiSearchBox = function (_a) {
|
|
|
28536
28401
|
React__default["default"].createElement("div", { className: "LuiSearchBox-right" },
|
|
28537
28402
|
React__default["default"].createElement(LuiSearchInput, { name: selectedMenuOption.name ? selectedMenuOption.name : undefined, minCharactersForSearch: 2, placeholderText: selectedMenuOption.placeholderText, getOptions: selectedMenuOption.getOption, onSelectOption: selectedMenuOption.onSelectOption, renderItem: selectedMenuOption.renderItem
|
|
28538
28403
|
? selectedMenuOption.renderItem
|
|
28539
|
-
:
|
|
28404
|
+
: (item) => {
|
|
28540
28405
|
return React__default["default"].createElement("span", { style: resultStyle$1 }, item.description);
|
|
28541
28406
|
}, disclaimer: selectedMenuOption.disclaimer, focusUpdate: autoFocus && isFocus ? focusUpdate : undefined }))));
|
|
28542
28407
|
};
|
|
28543
|
-
|
|
28544
|
-
return (React__default["default"].createElement(LuiButton,
|
|
28408
|
+
const LuiSearchBoxButton = React__default["default"].forwardRef((props, ref) => {
|
|
28409
|
+
return (React__default["default"].createElement(LuiButton, { level: "tertiary", ...props, ref: ref, className: "LuiSearchBox-button" },
|
|
28545
28410
|
props.children,
|
|
28546
28411
|
React__default["default"].createElement(LuiIcon, { size: "md", name: 'ic_keyboard_arrow_down', className: 'LuiSearchBox-button-icon', alt: '' })));
|
|
28547
28412
|
});
|
|
28548
|
-
|
|
28413
|
+
const renderSelectMenu = (items, onClick) => (React__default["default"].createElement(React__default["default"].Fragment, null, items.map((item) => {
|
|
28549
28414
|
return (React__default["default"].createElement(React__default["default"].Fragment, { key: item.value },
|
|
28550
28415
|
item.groupDivider ? React__default["default"].createElement(LuiSelectMenuDivider, null) : null,
|
|
28551
28416
|
item.groupTitle ? (React__default["default"].createElement(LuiSelectMenuHeader, null, item.groupTitle)) : null,
|
|
28552
|
-
React__default["default"].createElement(LuiSelectMenuItem, { "data-testid":
|
|
28553
|
-
})));
|
|
28417
|
+
React__default["default"].createElement(LuiSelectMenuItem, { "data-testid": `select-box-${item.value}`, value: item.value, onClick: onClick, noPadding: true }, item.title)));
|
|
28418
|
+
})));
|
|
28554
28419
|
|
|
28555
|
-
|
|
28420
|
+
const exampleSearchResults = [
|
|
28556
28421
|
{
|
|
28557
28422
|
id: 'DP44035-1',
|
|
28558
|
-
description: 'This is a example Newlands search result'
|
|
28423
|
+
description: 'This is a example Newlands search result',
|
|
28559
28424
|
},
|
|
28560
28425
|
{
|
|
28561
28426
|
id: 'DP44035-2',
|
|
28562
|
-
description: 'This is a example Newlands search result 2'
|
|
28427
|
+
description: 'This is a example Newlands search result 2',
|
|
28563
28428
|
},
|
|
28564
28429
|
];
|
|
28565
|
-
|
|
28430
|
+
const getDefaultOptions = (input) => {
|
|
28566
28431
|
if (input) {
|
|
28567
|
-
|
|
28432
|
+
const results = exampleSearchResults.filter((item) => {
|
|
28568
28433
|
return item.description.toUpperCase().includes(input.toUpperCase());
|
|
28569
28434
|
});
|
|
28570
|
-
return new Promise(
|
|
28571
|
-
setTimeout(
|
|
28435
|
+
return new Promise((resolve) => {
|
|
28436
|
+
setTimeout(() => resolve(results), 250);
|
|
28572
28437
|
});
|
|
28573
28438
|
}
|
|
28574
28439
|
else {
|
|
28575
28440
|
return Promise.resolve([]);
|
|
28576
28441
|
}
|
|
28577
28442
|
};
|
|
28578
|
-
|
|
28443
|
+
const defaultSelectOption = (selectedOption) => {
|
|
28579
28444
|
console.log('SELECTED OPTION: ', selectedOption);
|
|
28580
28445
|
};
|
|
28581
|
-
|
|
28582
|
-
|
|
28446
|
+
const resultStyle = { verticalAlign: 'middle' };
|
|
28447
|
+
const defaultRenderItem = (item) => {
|
|
28583
28448
|
return React__default["default"].createElement("span", { style: resultStyle }, item.description);
|
|
28584
28449
|
};
|
|
28585
|
-
|
|
28450
|
+
const searchBoxOptions = [
|
|
28586
28451
|
{
|
|
28587
28452
|
groupTitle: 'Title',
|
|
28588
28453
|
value: 'address',
|
|
@@ -28592,28 +28457,28 @@ var searchBoxOptions = [
|
|
|
28592
28457
|
disclaimer: 'This is a default disclaimer, add your own search options',
|
|
28593
28458
|
getOption: getDefaultOptions,
|
|
28594
28459
|
onSelectOption: defaultSelectOption,
|
|
28595
|
-
renderItem: defaultRenderItem
|
|
28460
|
+
renderItem: defaultRenderItem,
|
|
28596
28461
|
},
|
|
28597
28462
|
{
|
|
28598
28463
|
value: 'titleReference',
|
|
28599
28464
|
title: 'Title Reference',
|
|
28600
28465
|
placeholderText: 'Enter a title reference e.g. TN117/154',
|
|
28601
28466
|
getOption: getDefaultOptions,
|
|
28602
|
-
onSelectOption: defaultSelectOption
|
|
28467
|
+
onSelectOption: defaultSelectOption,
|
|
28603
28468
|
},
|
|
28604
28469
|
{
|
|
28605
28470
|
value: 'ownerName',
|
|
28606
28471
|
title: 'Registered Owner',
|
|
28607
28472
|
placeholderText: 'Enter owners name',
|
|
28608
28473
|
getOption: getDefaultOptions,
|
|
28609
|
-
onSelectOption: defaultSelectOption
|
|
28474
|
+
onSelectOption: defaultSelectOption,
|
|
28610
28475
|
},
|
|
28611
28476
|
{
|
|
28612
28477
|
value: 'lgdId',
|
|
28613
28478
|
title: 'Legal Description',
|
|
28614
28479
|
placeholderText: 'Example: Lot 2 DP 1234',
|
|
28615
28480
|
getOption: getDefaultOptions,
|
|
28616
|
-
onSelectOption: defaultSelectOption
|
|
28481
|
+
onSelectOption: defaultSelectOption,
|
|
28617
28482
|
},
|
|
28618
28483
|
{
|
|
28619
28484
|
value: 'parcelId',
|
|
@@ -28621,7 +28486,7 @@ var searchBoxOptions = [
|
|
|
28621
28486
|
placeholderText: 'Enter a parcel id e.g 93851642',
|
|
28622
28487
|
disclaimer: 'testdd2',
|
|
28623
28488
|
getOption: getDefaultOptions,
|
|
28624
|
-
onSelectOption: defaultSelectOption
|
|
28489
|
+
onSelectOption: defaultSelectOption,
|
|
28625
28490
|
},
|
|
28626
28491
|
{
|
|
28627
28492
|
groupTitle: 'Survey',
|
|
@@ -28630,7 +28495,7 @@ var searchBoxOptions = [
|
|
|
28630
28495
|
title: 'Survey number',
|
|
28631
28496
|
placeholderText: 'Enter a survey number, e.g. DP 44035',
|
|
28632
28497
|
getOption: getDefaultOptions,
|
|
28633
|
-
onSelectOption: defaultSelectOption
|
|
28498
|
+
onSelectOption: defaultSelectOption,
|
|
28634
28499
|
},
|
|
28635
28500
|
{
|
|
28636
28501
|
groupTitle: 'Instrument',
|
|
@@ -28639,20 +28504,19 @@ var searchBoxOptions = [
|
|
|
28639
28504
|
title: 'Instrument Number',
|
|
28640
28505
|
placeholderText: 'Example: 7723502.2',
|
|
28641
28506
|
getOption: getDefaultOptions,
|
|
28642
|
-
onSelectOption: defaultSelectOption
|
|
28507
|
+
onSelectOption: defaultSelectOption,
|
|
28643
28508
|
},
|
|
28644
28509
|
];
|
|
28645
|
-
|
|
28510
|
+
const getDefaultSearchMenuOptions = () => {
|
|
28646
28511
|
return searchBoxOptions;
|
|
28647
28512
|
};
|
|
28648
|
-
|
|
28649
|
-
var searchBoxOptions = _a.searchBoxOptions, initOptionValue = _a.initOptionValue, onMenuSelect = _a.onMenuSelect;
|
|
28513
|
+
const LOLSearchBox = ({ searchBoxOptions, initOptionValue, onMenuSelect, }) => {
|
|
28650
28514
|
return (React__default["default"].createElement(LuiSearchBox, { onMenuSelect: onMenuSelect, initOptionValue: initOptionValue, searchBoxOptions: searchBoxOptions ? searchBoxOptions : getDefaultSearchMenuOptions() }));
|
|
28651
28515
|
};
|
|
28652
28516
|
|
|
28653
28517
|
var mountainBroken = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzAwIDI1MCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7fS5jbHMtMntmaWxsOiM0MjQ1NDc7fS5jbHMtM3tjbGlwLXBhdGg6dXJsKCNjbGlwLXBhdGgpO30uY2xzLTR7ZmlsbDojN2E3YTdhO30uY2xzLTV7b3BhY2l0eTowLjU7fS5jbHMtNntmaWxsOmdyYXk7fS5jbHMtN3tmaWxsOiNhM2EzYTM7fS5jbHMtOHtmaWxsOiNmZmY7fS5jbHMtOXtmaWxsOnVybCgjcmFkaWFsLWdyYWRpZW50KTt9LmNscy0xMHtmaWxsOnVybCgjcmFkaWFsLWdyYWRpZW50LTIpO30uY2xzLTExe2ZpbGw6dXJsKCNsaW5lYXItZ3JhZGllbnQpO30uY2xzLTEye2ZpbGw6I2ViY2VhYzt9LmNscy0xM3tmaWxsOiNkNGJhOWI7fS5jbHMtMTR7b3BhY2l0eTowLjM7fS5jbHMtMTUsLmNscy0xNntmaWxsOiM3ZDczNjg7fS5jbHMtMTZ7b3BhY2l0eTowLjI7fS5jbHMtMTd7ZmlsbDojYjNlZWY4O30uY2xzLTE4e2ZpbGw6IzAwYTRhMjt9LmNscy0xOXtmaWxsOiM2YmNhYzk7fS5jbHMtMjB7ZmlsbDojOTZkYWQ5O30uY2xzLTIxe2ZpbGw6IzAwNjkyYTt9LmNscy0yMntmaWxsOiMwMDgzOWQ7fS5jbHMtMjN7ZmlsbDojMDA4YTE3O30uY2xzLTI0e2ZpbGw6IzAwNjU1Yzt9LmNscy0yNXtmaWxsOiMwMGFkMWI7fS5jbHMtMjZ7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudC0yKTt9LmNscy0yN3tmaWxsOiM2YjE2MGY7fS5jbHMtMjh7ZmlsbDojYmMyNjFhO30uY2xzLTI5e2ZpbGw6IzNkMDUwMDt9LmNscy0zMHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTMpO30uY2xzLTMxe2ZpbGw6I2ViNGMzZjt9LmNscy0zMntmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTQpO30uY2xzLTMze2ZpbGw6IzYxNjA2MDt9LmNscy0zNHtmaWxsOiNkYmQ5ZDk7fTwvc3R5bGU+PGNsaXBQYXRoIGlkPSJjbGlwLXBhdGgiPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIyMTEuMTQgMTIwLjAxIDE3NS43MSA3MC44NiAxNDUuNDIgMjMuNDMgMTE5LjMyIDc2LjU4IDk0LjU2IDExNS40NCA1Ni44NCAxNzkuNDUgMTI4LjkzIDE3NC42OSAxODMuNzEgMTgxLjc0IDI1OS43MiAxNjcuNDUgMjExLjE0IDEyMC4wMSIvPjwvY2xpcFBhdGg+PHJhZGlhbEdyYWRpZW50IGlkPSJyYWRpYWwtZ3JhZGllbnQiIGN4PSIxNDguNiIgY3k9IjEwNC40NSIgcj0iNzYuODIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAuMTMiIHN0b3AtY29sb3I9IiM3Zjg1OGEiIHN0b3Atb3BhY2l0eT0iMCIvPjxzdG9wIG9mZnNldD0iMC4yMiIgc3RvcC1jb2xvcj0iIzZlNzM3NyIgc3RvcC1vcGFjaXR5PSIwLjA5Ii8+PHN0b3Agb2Zmc2V0PSIwLjk2IiBzdG9wLWNvbG9yPSIjMGUwZjBmIiBzdG9wLW9wYWNpdHk9IjAuNiIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPSJyYWRpYWwtZ3JhZGllbnQtMiIgY3g9IjExNS40OSIgY3k9Ijg0LjE3IiByPSIxNTUuMjQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNiN2MwYzciLz48c3RvcCBvZmZzZXQ9IjAuMDQiIHN0b3AtY29sb3I9IiNhY2I0YmIiLz48c3RvcCBvZmZzZXQ9IjAuMjgiIHN0b3AtY29sb3I9IiM3NDdhN2UiLz48c3RvcCBvZmZzZXQ9IjAuNSIgc3RvcC1jb2xvcj0iIzQ4NGM0ZSIvPjxzdG9wIG9mZnNldD0iMC43IiBzdG9wLWNvbG9yPSIjMjgyYjJjIi8+PHN0b3Agb2Zmc2V0PSIwLjg2IiBzdG9wLWNvbG9yPSIjMTUxNjE3Ii8+PHN0b3Agb2Zmc2V0PSIwLjk2IiBzdG9wLWNvbG9yPSIjMGUwZjBmIi8+PC9yYWRpYWxHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudCIgeDE9IjIwMC44MSIgeTE9IjE5NC43OSIgeDI9IjI5MC4wOSIgeTI9IjE5NC43OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2JhYmFiYSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2Y1ZjVmNSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjExMi40MSIgeTE9IjE5NC4zNiIgeDI9IjE1NCIgeTI9IjE4NC4wMyIgeGxpbms6aHJlZj0iI2xpbmVhci1ncmFkaWVudCIvPjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyLWdyYWRpZW50LTMiIHgxPSItMjc2LjQyIiB5MT0iLTc2Ljg3IiB4Mj0iLTI1NC44OSIgeTI9Ii03Ny4xNSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgtNzcuNTUgMzgyKSByb3RhdGUoMTE3LjY5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2M3ZDBkNiIvPjxzdG9wIG9mZnNldD0iMC4wOSIgc3RvcC1jb2xvcj0iI2FlYjZiYiIvPjxzdG9wIG9mZnNldD0iMC4zMiIgc3RvcC1jb2xvcj0iIzc2N2I3ZSIvPjxzdG9wIG9mZnNldD0iMC41MyIgc3RvcC1jb2xvcj0iIzQ5NGM0ZSIvPjxzdG9wIG9mZnNldD0iMC43MSIgc3RvcC1jb2xvcj0iIzI5MmIyYyIvPjxzdG9wIG9mZnNldD0iMC44NiIgc3RvcC1jb2xvcj0iIzE1MTYxNyIvPjxzdG9wIG9mZnNldD0iMC45NiIgc3RvcC1jb2xvcj0iIzBlMGYwZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQtNCIgeDE9IjExNi4yNCIgeTE9IjE4NC42NSIgeDI9IjExNi4yOCIgeTI9IjE4OC4zNiIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgtMjEuNDEgMTcuODcpIHJvdGF0ZSgtNy4wNSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNhNmFmYjUiLz48c3RvcCBvZmZzZXQ9IjAuMjQiIHN0b3AtY29sb3I9IiM3NDdhN2UiLz48c3RvcCBvZmZzZXQ9IjAuNDciIHN0b3AtY29sb3I9IiM0ODRjNGUiLz48c3RvcCBvZmZzZXQ9IjAuNjgiIHN0b3AtY29sb3I9IiMyODJiMmMiLz48c3RvcCBvZmZzZXQ9IjAuODUiIHN0b3AtY29sb3I9IiMxNTE2MTciLz48c3RvcCBvZmZzZXQ9IjAuOTYiIHN0b3AtY29sb3I9IiMwZTBmMGYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMjExLjE0IDEyMC4wMSAxNzUuNzEgNzAuODYgMTQ1LjQyIDIzLjQzIDExOS4zMiA3Ni41OCA5NC41NiAxMTUuNDQgNTYuODQgMTc5LjQ1IDEyOC45MyAxNzQuNjkgMTgzLjcxIDE4MS43NCAyNTkuNzIgMTY3LjQ1IDIxMS4xNCAxMjAuMDEiLz48ZyBjbGFzcz0iY2xzLTMiPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTE0Ni43OSw2OS44MmwtMS0uNDNjLS44Mi0uMzQtLjg3LTEtLjEyLTEuNDdsMS0uNTljLjc1LS40Ny42NC0uOS0uMjUtMWwtMS4xMS0uMDdjLS44OS0uMDYtMS4xNS0uNjYtLjU5LTEuMzVsLjctLjg3Yy41Ni0uNjkuMzItMS4wNS0uNTQtLjgybC0xLjA4LjNjLS44NS4yMy0xLjMtLjI2LTEtMS4wOWwuMzgtMWMuMzEtLjgzLDAtMS4xLS43Ny0uNmwtLjkzLjYzYy0uNzMuNS0xLjMxLjE5LTEuMjktLjdsMC0xLjEyYzAtLjg4LS40LTEtLjkzLS4zMmwtLjY3LjljLS41Mi43MS0xLjE4LjYtMS40NS0uMjRsLS4zNC0xLjA3Yy0uMjctLjg0LS43MS0uODQtMSwwTDEzNS40Myw2MGMtLjI3Ljg0LS45MywxLTEuNDUuMjRsLS42Ny0uOWMtLjUzLS43MS0uOTUtLjU2LS45My4zMmwwLDEuMTJjMCwuODktLjU2LDEuMi0xLjI5LjdsLS45My0uNjNjLS43My0uNS0xLjA4LS4yMy0uNzcuNmwuMzgsMWMuMzEuODMtLjE0LDEuMzItMSwxLjA5bC0xLjA4LS4zYy0uODYtLjIzLTEuMS4xMy0uNTQuODJsLjcxLjg3Yy41NS42OS4yOSwxLjI5LS42LDEuMzVsLTEuMTEuMDdjLS44OS4wNS0xLC40OC0uMjUsMWwxLC41OWMuNzUuNDcuNjksMS4xMy0uMTMsMS40N2wtMSwuNDNjLS44Mi4zNC0uNzguNzguMDgsMWwxLjA5LjI1Yy44Ni4yLDEsLjg0LjM2LDEuNDNsLS44NC43NGMtLjY2LjU4LS40OCwxLC40LjlsMS4xMS0uMTJjLjg4LS4wOSwxLjI0LjQ2LjgxLDEuMjNsLS41NiwxYy0uNDMuNzctLjEzLDEuMDkuNjcuNzJsMS0uNDdjLjgxLS4zNywxLjMzLDAsMS4xNy45bC0uMjEsMS4xYy0uMTcuODcuMjIsMS4wOC44Ni40N2wuODEtLjc4Yy42NC0uNjEsMS4yNi0uMzksMS4zOS40OGwuMTYsMS4xMWMuMTMuODguNTcsMSwxLC4xNmwuNTEtMWMuNDEtLjc5LDEuMDctLjc5LDEuNDgsMGwuNTEsMWMuNC43OS44NC43MiwxLS4xNmwuMTYtMS4xMWMuMTMtLjg3Ljc1LTEuMDksMS4zOS0uNDhsLjgxLjc4Yy42NC42MSwxLC40Ljg2LS40N2wtLjIxLTEuMWMtLjE2LS44Ny4zNi0xLjI3LDEuMTctLjlsMSwuNDdjLjgxLjM3LDEuMSwwLC42Ny0uNzJsLS41Ni0xYy0uNDMtLjc3LS4wNy0xLjMyLjgxLTEuMjNsMS4xMS4xMmMuODguMDksMS4wNi0uMzIuNC0uOWwtLjg0LS43NGMtLjY2LS41OS0uNS0xLjIzLjM2LTEuNDNsMS4wOS0uMjVDMTQ3LjU3LDcwLjYsMTQ3LjYxLDcwLjE2LDE0Ni43OSw2OS44MlptLTEwLjUzLDYuODNhNy4zLDcuMywwLDEsMSw3LjMtNy4yOUE3LjI5LDcuMjksMCwwLDEsMTM2LjI2LDc2LjY1WiIvPjxjaXJjbGUgY2xhc3M9ImNscy00IiBjeD0iMTM2LjI2IiBjeT0iNjkuMzYiIHI9IjMuNjIiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xMTEsMTI5LjgzbC0xLjY1LS42OGMtMS4zLS41NC0xLjM4LTEuNTktLjE5LTIuMzRsMS41MS0uOTRjMS4xOS0uNzQsMS0xLjQyLS4zOC0xLjUxbC0xLjc4LS4xMWMtMS40MS0uMDktMS44My0xLS45NC0yLjE0bDEuMTItMS4zOWMuODktMS4wOS41LTEuNjgtLjg1LTEuM2wtMS43Mi40N2MtMS4zNi4zNy0yLjA3LS40LTEuNTktMS43MmwuNjItMS42OGMuNDgtMS4zMi0uMDctMS43NS0xLjIzLS45NWwtMS40NywxYy0xLjE3Ljc5LTIuMDkuMjktMi4wNi0xLjExbDAtMS43OGMwLTEuNDEtLjYzLTEuNjQtMS40Ny0uNTFsLTEuMDcsMS40M2MtLjg0LDEuMTItMS44OCwxLTIuMzEtLjM5bC0uNTQtMS42OWMtLjQzLTEuMzQtMS4xMy0xLjM0LTEuNTYsMEw5MywxMTQuMThjLS40MywxLjM0LTEuNDcsMS41MS0yLjMxLjM5bC0xLjA3LTEuNDNjLS44NC0xLjEzLTEuNS0uOS0xLjQ3LjUxbDAsMS43OGMwLDEuNC0uODksMS45LTIsMS4xMWwtMS40OC0xYy0xLjE2LS44LTEuNzEtLjM3LTEuMjMuOTVsLjYyLDEuNjhjLjQ4LDEuMzItLjIzLDIuMDktMS41OSwxLjcybC0xLjcyLS40N2MtMS4zNS0uMzgtMS43NC4yMS0uODUsMS4zTDgxLDEyMi4xMWMuODksMS4wOS40NywyLS45NCwyLjE0bC0xLjc3LjExYy0xLjQxLjA5LTEuNTguNzctLjM5LDEuNTFsMS41MS45NGMxLjIuNzUsMS4xMSwxLjgtLjE5LDIuMzRsLTEuNjUuNjhjLTEuMjkuNTQtMS4yNCwxLjI0LjEzLDEuNTVsMS43NC40MWMxLjM3LjMxLDEuNjMsMS4zMy41NywyLjI2bC0xLjMzLDEuMThjLTEuMDYuOTMtLjc3LDEuNTguNjIsMS40M2wxLjc4LS4xOGMxLjQtLjE1LDIsLjc0LDEuMjgsMkw4MS40MywxNDBjLS43LDEuMjItLjIyLDEuNzQsMSwxLjE1bDEuNjItLjc1YzEuMjgtLjU5LDIuMTEuMDUsMS44NSwxLjQzbC0uMzMsMS43NWMtLjI2LDEuMzkuMzYsMS43MiwxLjM3Ljc1bDEuMjktMS4yNGMxLTEsMi0uNjMsMi4yMS43NmwuMjYsMS43N2MuMiwxLjM5Ljg5LDEuNSwxLjUzLjI1bC44Mi0xLjU4Yy42NC0xLjI1LDEuNy0xLjI1LDIuMzQsMGwuODIsMS41OGMuNjQsMS4yNSwxLjMzLDEuMTQsMS41NC0uMjVsLjI1LTEuNzdjLjIxLTEuMzksMS4yLTEuNzMsMi4yMi0uNzZsMS4yOCwxLjI0YzEsMSwxLjYzLjY0LDEuMzctLjc1bC0uMzMtMS43NWMtLjI2LTEuMzguNTgtMiwxLjg1LTEuNDNsMS42Mi43NWMxLjI3LjU5LDEuNzUuMDcsMS0xLjE1bC0uODgtMS41NWMtLjY5LTEuMjItLjExLTIuMTEsMS4yOC0ybDEuNzguMThjMS4zOS4xNSwxLjY4LS41LjYyLTEuNDNsLTEuMzMtMS4xOGMtMS4wNi0uOTMtLjgtMiwuNTctMi4yNmwxLjc0LS40MUMxMTIuMjYsMTMxLjA3LDExMi4zMiwxMzAuMzcsMTExLDEyOS44M1pNOTQuMjcsMTQwLjdhMTEuNjEsMTEuNjEsMCwxLDEsMTEuNi0xMS42MUExMS42LDExLjYsMCwwLDEsOTQuMjcsMTQwLjdaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTQiIGN4PSI5NC4yNyIgY3k9IjEyOS4wOSIgcj0iNS43NSIvPjxnIGNsYXNzPSJjbHMtNSI+PHJlY3QgY2xhc3M9ImNscy02IiB4PSIxMzQuMTYiIHk9Ijc3LjMiIHdpZHRoPSIzOS40NCIgaGVpZ2h0PSIzNS45MSIgcng9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMi4yOCAxMzYuNzEpIHJvdGF0ZSgtNDUpIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxNTMuODgiIGN5PSI5NS4yNSIgcj0iNy41MiIvPjxyZWN0IGNsYXNzPSJjbHMtNiIgeD0iMjA0LjIxIiB5PSI4MSIgd2lkdGg9IjIzLjQyIiBoZWlnaHQ9IjE1Mi41OSIgcng9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00Ny45OCAxOTguNzUpIHJvdGF0ZSgtNDUpIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNTguNzUiIHk9IjExMS4zNiIgd2lkdGg9IjIzLjQyIiBoZWlnaHQ9IjAuOTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yOS4xNSAxNTMuMjkpIHJvdGF0ZSgtNDUpIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNjAuMzUiIHk9IjExMi45NiIgd2lkdGg9IjIzLjQyIiBoZWlnaHQ9IjAuOTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yOS44MSAxNTQuODkpIHJvdGF0ZSgtNDUpIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNjEuOTciIHk9IjExNC41OCIgd2lkdGg9IjIzLjQyIiBoZWlnaHQ9IjAuOTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zMC40OSAxNTYuNTEpIHJvdGF0ZSgtNDUpIi8+PC9nPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTE3MC42OSw5NS45LDE2OSw5NS4yMmMtMS4yOS0uNTQtMS4zOC0xLjU5LS4xOS0yLjMzbDEuNTEtMWMxLjE5LS43NCwxLTEuNDItLjM4LTEuNTFsLTEuNzgtLjExYy0xLjQtLjA5LTEuODMtMS0uOTQtMi4xNGwxLjEyLTEuMzljLjg5LTEuMDkuNTEtMS42OC0uODUtMS4zbC0xLjcyLjQ3Yy0xLjM1LjM3LTIuMDctLjQtMS41OC0xLjcybC42MS0xLjY3Yy40OC0xLjMyLS4wNy0xLjc2LTEuMjMtMWwtMS40NywxYy0xLjE2Ljc5LTIuMDkuMjktMi4wNi0xLjExbDAtMS43OGMwLTEuNDEtLjY0LTEuNjQtMS40OC0uNTFsLTEuMDYsMS40M2MtLjg0LDEuMTMtMS44OCwxLTIuMzEtLjM5bC0uNTUtMS42OWMtLjQyLTEuMzQtMS4xMy0xLjM0LTEuNTYsMGwtLjU0LDEuNjljLS40MywxLjM0LTEuNDcsMS41Mi0yLjMxLjM5bC0xLjA2LTEuNDNjLS44NC0xLjEzLTEuNTEtLjktMS40OC41MWwwLDEuNzhjMCwxLjQtLjksMS45LTIuMDYsMS4xMWwtMS40Ny0xYy0xLjE2LS44LTEuNzItLjM2LTEuMjMsMWwuNjEsMS42N2MuNDgsMS4zMi0uMjMsMi4wOS0xLjU5LDEuNzJsLTEuNzEtLjQ3Yy0xLjM2LS4zOC0xLjc0LjIxLS44NiwxLjNsMS4xMywxLjM5Yy44OCwxLjA5LjQ2LDItLjk0LDIuMTRsLTEuNzguMTFjLTEuNC4wOS0xLjU4Ljc3LS4zOCwxLjUxbDEuNTEsMWMxLjE5Ljc0LDEuMSwxLjc5LS4yLDIuMzNsLTEuNjQuNjhjLTEuMy41NC0xLjI0LDEuMjQuMTMsMS41NmwxLjczLjRjMS4zNy4zMSwxLjYzLDEuMzQuNTgsMi4yN2wtMS4zNCwxLjE4Yy0xLjA1LjkzLS43NywxLjU3LjYzLDEuNDJsMS43Ny0uMThjMS40LS4xNCwyLC43NCwxLjI4LDJsLS44OCwxLjU1Yy0uNjksMS4yMi0uMjIsMS43NCwxLjA2LDEuMTVsMS42MS0uNzVjMS4yOC0uNTksMi4xMS4wNSwxLjg1LDEuNDRsLS4zMywxLjc1Yy0uMjYsMS4zOC4zNiwxLjcxLDEuMzcuNzRsMS4yOS0xLjIzYzEtMSwyLS42NCwyLjIxLjc2bC4yNiwxLjc2Yy4yLDEuMzkuODksMS41LDEuNTQuMjVsLjgxLTEuNThjLjY1LTEuMjUsMS43LTEuMjUsMi4zNCwwbC44MiwxLjU4Yy42NCwxLjI1LDEuMzQsMS4xNCwxLjU0LS4yNWwuMjYtMS43NmMuMi0xLjQsMS4xOS0xLjc0LDIuMjEtLjc2bDEuMjgsMS4yM2MxLDEsMS42NC42NCwxLjM4LS43NGwtLjMzLTEuNzVjLS4yNi0xLjM5LjU3LTIsMS44NC0xLjQ0bDEuNjIuNzVjMS4yOC41OSwxLjc1LjA3LDEuMDYtMS4xNWwtLjg4LTEuNTVjLS43LTEuMjItLjEyLTIuMSwxLjI4LTJsMS43Ny4xOGMxLjQuMTUsMS42OC0uNDkuNjMtMS40MmwtMS4zNC0xLjE4Yy0xLjA1LS45My0uNzktMiwuNTgtMi4yN2wxLjczLS40QzE3MS45Myw5Ny4xNCwxNzIsOTYuNDQsMTcwLjY5LDk1LjlabS0xNi43NSwxMC44N2ExMS42MSwxMS42MSwwLDEsMSwxMS42MS0xMS42MUExMS42MSwxMS42MSwwLDAsMSwxNTMuOTQsMTA2Ljc3WiIvPjxjaXJjbGUgY2xhc3M9ImNscy03IiBjeD0iMTUzLjk0IiBjeT0iOTUuMTYiIHI9IjUuNzUiLz48cmVjdCBjbGFzcz0iY2xzLTYiIHg9IjExNi4wMyIgeT0iMTAwLjA3IiB3aWR0aD0iNDguNTUiIGhlaWdodD0iNTMuMzIiIHJ4PSI2Ljc2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAuMTYgMjQxLjIxKSByb3RhdGUoLTc5LjM2KSIvPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMTQwLjMiIGN5PSIxMjYuNzMiIHI9IjEwLjE3Ii8+PHJlY3QgY2xhc3M9ImNscy02IiB4PSIxNS4yNSIgeT0iMjI3LjQ3IiB3aWR0aD0iMjA2LjI5IiBoZWlnaHQ9IjMxLjY3IiByeD0iNi43NiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE0Mi41OSAzMTQuNzIpIHJvdGF0ZSgtNzkuMzYpIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxMTguNjEiIHk9IjE1Ny4yNSIgd2lkdGg9IjMxLjY3IiBoZWlnaHQ9IjEuMjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMxLjQ3IC0yMi4xMikgcm90YXRlKDEwLjY0KSIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTE4LjA1IiB5PSIxNjAuMjUiIHdpZHRoPSIzMS42NyIgaGVpZ2h0PSIxLjI4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMi4wMiAtMjEuOTYpIHJvdGF0ZSgxMC42NCkiLz48cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjExNy40OCIgeT0iMTYzLjMiIHdpZHRoPSIzMS42NyIgaGVpZ2h0PSIxLjI4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMi41NyAtMjEuOCkgcm90YXRlKDEwLjY0KSIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTEzOC43OSwxMDAuODdjLjY3LTIuMSwxLjc3LTIuMSwyLjQ0LDBsLjg1LDIuNjVjLjY3LDIuMSwyLjMsMi4zNywzLjYxLjZsMS42Ny0yLjIzYzEuMzEtMS43NiwyLjM1LTEuNDEsMi4zMS43OWwtLjA2LDIuNzljLS4wNSwyLjIsMS40LDMsMy4yMiwxLjc0bDIuMy0xLjU3YzEuODItMS4yNCwyLjY4LS41NywxLjkzLDEuNWwtMSwyLjYyYy0uNzYsMi4wNi4zNiwzLjI3LDIuNDgsMi42OWwyLjY5LS43NGMyLjEyLS41OCwyLjcyLjM0LDEuMzMsMi4wNWwtMS43NiwyLjE2Yy0xLjM4LDEuNzEtLjcyLDMuMjIsMS40OCwzLjM1bDIuNzguMThjMi4xOS4xMywyLjQ2LDEuMi42LDIuMzZsLTIuMzcsMS40OGMtMS44NiwxLjE2LTEuNzMsMi44MS4zLDMuNjVsMi41OCwxLjA2YzIsLjg1LDEuOTQsMS45NC0uMiwyLjQ0bC0yLjcyLjYzYy0yLjE0LjQ5LTIuNTUsMi4wOS0uOSwzLjU1bDIuMDksMS44NGMxLjY1LDEuNDYsMS4yMSwyLjQ2LTEsMi4yNGwtMi43Ny0uMjljLTIuMTktLjIzLTMuMDksMS4xNS0yLDMuMDdsMS4zNywyLjQyYzEuMDksMS45MS4zNSwyLjcyLTEuNjUsMS43OWwtMi41My0xLjE3Yy0yLS45Mi0zLjMuMDktMi44OSwyLjI1bC41MiwyLjc0Yy40LDIuMTYtLjU2LDIuNjktMi4xNSwxLjE2bC0yLTEuOTNjLTEuNTktMS41Mi0zLjE1LTEtMy40NywxLjE5bC0uNCwyLjc2Yy0uMzIsMi4xOC0xLjQsMi4zNi0yLjQxLjRsLTEuMjctMi40OGMtMS0yLTIuNjYtMi0zLjY2LDBsLTEuMjgsMi40OGMtMSwyLTIuMDksMS43OC0yLjQxLS40bC0uNC0yLjc2Yy0uMzItMi4xNy0xLjg4LTIuNzEtMy40Ni0xLjE5bC0yLDEuOTNjLTEuNTksMS41My0yLjU2LDEtMi4xNS0xLjE2bC41MS0yLjc0Yy40MS0yLjE2LS44OS0zLjE3LTIuODktMi4yNWwtMi41MywxLjE3Yy0yLC45My0yLjc0LjEyLTEuNjUtMS43OWwxLjM4LTIuNDJjMS4wOC0xLjkyLjE4LTMuMy0yLTMuMDdsLTIuNzguMjljLTIuMTkuMjItMi42My0uNzgtMS0yLjI0bDIuMDktMS44NGMxLjY1LTEuNDYsMS4yNS0zLjA2LS45LTMuNTVsLTIuNzEtLjYzYy0yLjE1LS41LTIuMjQtMS41OS0uMi0yLjQ0bDIuNTctMS4wNmMyLS44NCwyLjE3LTIuNDkuMy0zLjY1bC0yLjM2LTEuNDhjLTEuODctMS4xNi0xLjYtMi4yMy42LTIuMzZsMi43OC0uMThjMi4yLS4xMywyLjg2LTEuNjQsMS40Ny0zLjM1bC0xLjc2LTIuMTZjLTEuMzgtMS43MS0uNzgtMi42MywxLjM0LTIuMDVsMi42OS43NGMyLjEyLjU4LDMuMjMtLjYzLDIuNDgtMi42OWwtMS0yLjYyYy0uNzYtMi4wNy4xMS0yLjc0LDEuOTItMS41bDIuMzEsMS41N2MxLjgxLDEuMjQsMy4yNi40NiwzLjIyLTEuNzRsLS4wNi0yLjc5YzAtMi4yLDEtMi41NSwyLjMxLS43OWwxLjY2LDIuMjNjMS4zMiwxLjc3LDIuOTQsMS41LDMuNjItLjZaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxNDAuMDEiIGN5PSIxMjYuODUiIHI9IjE4LjE1Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTgiIGN4PSIxNDAuMDEiIGN5PSIxMjYuODUiIHI9IjkiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik0xMDcuNDYsMTQxLjc0Yy42Ny0yLjA5LDEuNzctMi4wOSwyLjQ0LDBsLjg1LDIuNjZjLjY3LDIuMDksMi4yOSwyLjM2LDMuNjEuNmwxLjY3LTIuMjRjMS4zMS0xLjc2LDIuMzUtMS40LDIuMy44bDAsMi43OGMwLDIuMiwxLjQsMywzLjIyLDEuNzVsMi4zLTEuNThjMS44Mi0xLjI0LDIuNjgtLjU2LDEuOTMsMS41bC0xLDIuNjJjLS43NiwyLjA3LjM2LDMuMjgsMi40OCwyLjdsMi42OC0uNzRjMi4xMy0uNTksMi43My4zMywxLjM0LDJsLTEuNzYsMi4xNmMtMS4zOCwxLjcxLS43MiwzLjIyLDEuNDcsMy4zNmwyLjc5LjE3YzIuMTkuMTQsMi40NiwxLjIuNiwyLjM3TDEzMiwxNjQuMTZjLTEuODcsMS4xNy0xLjczLDIuODEuMywzLjY1bDIuNTgsMS4wN2MyLC44NCwxLjk0LDEuOTQtLjIsMi40M2wtMi43Mi42M2MtMi4xNC41LTIuNTUsMi4wOS0uOSwzLjU1bDIuMDksMS44NWMxLjY1LDEuNDUsMS4yMSwyLjQ2LTEsMi4yM2wtMi43Ny0uMjljLTIuMTktLjIyLTMuMDksMS4xNi0yLDMuMDdsMS4zNywyLjQyYzEuMDksMS45Mi4zNCwyLjcyLTEuNjUsMS44bC0yLjUzLTEuMTdjLTItLjkzLTMuMy4wOC0yLjg5LDIuMjVsLjUyLDIuNzRjLjQsMi4xNi0uNTYsMi42OC0yLjE1LDEuMTZsLTItMS45M2MtMS41OS0xLjUzLTMuMTUtMS0zLjQ3LDEuMTlsLS40LDIuNzZjLS4zMiwyLjE3LTEuNCwyLjM1LTIuNDEuNGwtMS4yNy0yLjQ4Yy0xLTItMi42Ni0yLTMuNjYsMEwxMDUuNTcsMTk0Yy0xLDEuOTUtMi4wOSwxLjc3LTIuNDEtLjRsLS40LTIuNzZjLS4zMi0yLjE4LTEuODgtMi43Mi0zLjQ2LTEuMTlsLTIsMS45M2MtMS41OCwxLjUyLTIuNTUsMS0yLjE0LTEuMTZsLjUxLTIuNzRjLjQxLTIuMTctLjg5LTMuMTgtMi44OS0yLjI1bC0yLjUzLDEuMTdjLTIsLjkyLTIuNzQuMTItMS42NS0xLjhMOTAsMTgyLjM1YzEuMDgtMS45MS4xOC0zLjI5LTItMy4wN2wtMi43Ny4yOWMtMi4xOS4yMy0yLjYzLS43OC0xLTIuMjNsMi4wOS0xLjg1YzEuNjUtMS40NiwxLjI0LTMuMDUtLjktMy41NWwtMi43MS0uNjNjLTIuMTUtLjQ5LTIuMjQtMS41OS0uMjEtMi40M2wyLjU4LTEuMDdjMi0uODQsMi4xNy0yLjQ4LjMtMy42NUw4MywxNjIuNjljLTEuODctMS4xNy0xLjYtMi4yMy42LTIuMzdsMi43OC0uMTdjMi4xOS0uMTQsMi44Ni0xLjY1LDEuNDctMy4zNmwtMS43Ni0yLjE2Yy0xLjM4LTEuNzEtLjc4LTIuNjMsMS4zNC0ybDIuNjkuNzRjMi4xMi41OCwzLjIzLS42MywyLjQ4LTIuN2wtMS0yLjYyYy0uNzYtMi4wNi4xMS0yLjc0LDEuOTItMS41bDIuMywxLjU4YzEuODIsMS4yNCwzLjI3LjQ1LDMuMjItMS43NWwwLTIuNzhjMC0yLjIsMS0yLjU2LDIuMzEtLjhMMTAzLDE0NWMxLjMyLDEuNzYsMi45NCwxLjQ5LDMuNjEtLjZaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxMDguNjgiIGN5PSIxNjcuNzMiIHI9IjE4LjE1Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTgiIGN4PSIxMDguNjgiIGN5PSIxNjcuNzMiIHI9IjkiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik0xNzAuMjksMTQyLjM0Yy41LTEuNTUsMS4zMS0xLjU1LDEuODEsMHMxLjY5LDEuNzUsMi42Ny40NSwxLjc0LTEsMS43LjU4LDEsMi4yMSwyLjM4LDEuMjksMi0uNDIsMS40MywxLjExLjI2LDIuNDIsMS44MywyLDIsLjI1LDEsMS41MS0uNTQsMi4zOCwxLjA4LDIuNDgsMS44My44OS40NSwxLjc1LTEuMjgsMi4wNy4yMiwyLjcsMS40NCwxLjQzLS4xNSwxLjgtMS44OCwxLjU0LS42NiwyLjYyLjg5LDEuODItLjczLDEuNjUtMi4yOC44NS0xLjQ4LDIuMjcuMjUsMi0xLjIyLDEuMzMtMi40NC4wNi0yLjE0LDEuNjYtLjQxLDItMS41OC44Ni0yLjMzLS43My0yLjU2Ljg4LTEsMS43NC0xLjc4LjI5LTItMS40NC0yLjcxLDAtMS41NCwxLjMxLTEuNzgtLjI5LTEuMzktMi0yLjU2LS44OC0xLjg5Ljc0LTEuNTktLjg2LS42Ni0yLjM1LTIuMTMtMS42Ni0yLC4wOC0xLjIyLTEuMzMuMTMtMi40NC0xLjQ4LTIuMjctMi0uNTctLjczLTEuNjUuOTItMi4yNi0uNjYtMi42Mi0xLjY2LTEuMTgtLjE1LTEuOCwxLjYtMS44NC4yMi0yLjctMS4xOC0xLjY1LjQ0LTEuNzUsMi4xMi0xLjIyLDEuMDktMi40OC0uNTgtMS45NCwxLTEuNTEsMi4zOS0uNDYsMS44My0yLC4wOC0yLDEuNDItMS4xMSwyLjQyLjM0LDIuMzktMS4yOS43My0xLjg5LDEuNy0uNThTMTY5LjgsMTQzLjg5LDE3MC4yOSwxNDIuMzRaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxNzEuMTkiIGN5PSIxNTUuODYiIHI9IjkuOTUiLz48Y2lyY2xlIGNsYXNzPSJjbHMtOCIgY3g9IjE3MS4xOSIgY3k9IjE1NS44NiIgcj0iNy4wNCIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTE5OS42OCwxMjcuNTJjLjcxLTMuMDcsMS44Ny0zLjA3LDIuNTksMHMzLDMuNjIsNSwxLjI0LDMuMDktMS44NCwyLjMsMS4yLDEsNC41OSwzLjg4LDMuNDQsMy41OC0uMiwxLjQ3LDIuMTMtMS4yOSw0LjUxLDEuODQsNC44NSwzLjI2LDEuNDkuMzEsMi41Ny0zLjI0LDMuMzktLjYzLDUuMTUsMi4yLDIuODQtLjkyLDIuNDItNC40NCwxLjUtMi45NCw0LjI2LjYzLDMuNTQtMS45NCwxLjcyLTQuNjMtLjczLTQuNTksMi40MS0xLjA5LDMuNDMtMi41Mi42Mi0zLjc1LTIuOC01LjE4LDAtMi41NiwyLjUzLTIuNTItLjYyLTItNC4yMy00LjU5LTIuNDEtMy40MywxLjA1LTEuOTQtMS43Mi4xOC00LjY4LTIuOTQtNC4yNi0zLjUzLS42Ny0uOTItMi40MiwyLjMzLTQuMDctLjYyLTUuMTUtMi44Mi0yLjIzLjMxLTIuNTcsNC0yLjUyLDEuODQtNC44NS0xLjQ2LTMuMjksMS40Ny0yLjEzLDQuNjctLjQsMy44OC0zLjQ0LjI0LTMuNTksMi4yOS0xLjJTMTk5LDEzMC41OCwxOTkuNjgsMTI3LjUyWiIvPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMjAwLjk3IiBjeT0iMTQzLjI5IiByPSI3Ljk5Ii8+PHBhdGggY2xhc3M9ImNscy04IiBkPSJNMTYxLjY2LDQxLjY0Yy43MS0zLjA2LDEuODgtMy4wNiwyLjU5LDBzMywzLjYzLDUsMS4yNCwzLjA4LTEuODQsMi4yOSwxLjIxLjk1LDQuNTksMy44OCwzLjQzLDMuNTktLjE5LDEuNDcsMi4xNC0xLjI5LDQuNTEsMS44NCw0Ljg0LDMuMjcsMS41LjMxLDIuNTgtMy4yMywzLjM5LS42Miw1LjE0LDIuMiwyLjg1LS45MiwyLjQzLTQuNDQsMS41LTIuOTUsNC4yNi42MywzLjU0LTEuOTQsMS43MlMxNjgsNjkuODksMTY4LjA3LDczcy0xLjEsMy40Mi0yLjUyLjYyLTMuNzYtMi44MS01LjE4LDAtMi41NiwyLjUzLTIuNTItLjYyLTItNC4yMy00LjU5LTIuNDEtMy40NCwxLjA1LTEuOTQtMS43Mi4xNy00LjY4LTIuOTUtNC4yNi0zLjUzLS42Ny0uOTEtMi40MywyLjMzLTQuMDctLjYzLTUuMTQtMi44Mi0yLjI0LjMxLTIuNTgsNC0yLjUxLDEuODQtNC44NC0xLjQ1LTMuMjksMS40Ny0yLjE0LDQuNjgtLjM5LDMuODgtMy40My4yNC0zLjU5LDIuMy0xLjIxUzE2MSw0NC43MSwxNjEuNjYsNDEuNjRaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxNjIuOTYiIGN5PSI1Ny40MiIgcj0iNy45OSIvPjwvZz48L2c+PGcgaWQ9IkxheWVyXzUiIGRhdGEtbmFtZT0iTGF5ZXIgNSI+PHBvbHlnb24gY2xhc3M9ImNscy05IiBwb2ludHM9IjIxMS4xNCAxMjAuMDEgMTc1LjcxIDcwLjg2IDE0NS40MiAyMy40MyAxMTkuMzIgNzYuNTggOTQuNTYgMTE1LjQ0IDU2Ljg0IDE3OS40NSAxMjguOTMgMTc0LjY5IDE4My43MSAxODEuNzQgMjU5LjcyIDE2Ny40NSAyMTEuMTQgMTIwLjAxIi8+PC9nPjxnIGlkPSJMYXllcl80IiBkYXRhLW5hbWU9IkxheWVyIDQiPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTAiIHBvaW50cz0iNjEuOTEgMTc4LjcyIDEwMy45NSAxMDcuNDIgMTIzLjE3IDc4LjIyIDE0Ny4yNSAyNi4yOSAxNDUuNDIgMjMuNDMgMTE5LjMyIDc2LjU4IDkzLjE0IDExNy44MyA1Ni44NCAxNzkuNDUgNjEuOTEgMTc4LjcyIi8+PC9nPjxnIGlkPSJMYXllcl83IiBkYXRhLW5hbWU9IkxheWVyIDciPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTEiIHBvaW50cz0iMjUxLjMgMjE0LjAzIDI2MS41OSAyMDAuMzUgMjc1LjAyIDE5OS4wOCAyNzQuMDUgMTg5LjQyIDI5MC4wOSAxNzUuNTUgMjQ5LjM1IDE3Ny45OCAyMDAuODEgMTgyLjk4IDI1MS4zIDIxNC4wMyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTIiIHBvaW50cz0iMjQxLjc1IDE5My40NiAyNjQuMzIgMTkxLjY0IDI2NC40MiAxOTMuMTkgMjQyLjc5IDE5NC42NiAyNDEuNzUgMTkzLjQ2Ii8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTIzMywyMDMuMDhjMS0uMTIsNDItNCw0Mi00TDIxNC42Myw2Ny42MVY4Nmw0OS43OSwxMDcuMTYtMzAuNiwyLjA3Ii8+PGcgY2xhc3M9ImNscy0xNCI+PHBhdGggY2xhc3M9ImNscy0xNSIgZD0iTTI2NC41NywxNzYuMzMsMjE0LjYzLDY3LjYxVjg2bDQ3LjcsMTAyLjY3QzI2Mi40NywxODIuOSwyNjQuNDYsMTgxLjQxLDI2NC41NywxNzYuMzNaIi8+PHBhdGggY2xhc3M9ImNscy0xNSIgZD0iTTI0MS42LDIwMi4yNWwyMC0xLjljLjExLTEuNTguNzYtMy44Ny44Ny03bC0yOC42NCwxLjk0LS42NCw2LjMxWiIvPjwvZz48cG9seWdvbiBjbGFzcz0iY2xzLTE2IiBwb2ludHM9IjI2Mi40NiAxOTMuMzIgMjYzLjIzIDE5MS45MiAyNDEuMTIgMTkzLjM2IDI0MS4xMiAxOTQuNzcgMjYyLjQ2IDE5My4zMiIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTMiIHBvaW50cz0iMjQ4LjIzIDIxNC45NiAyNTEuMyAyMTQuMDMgMjM2LjYgMTM5Ljk4IDIyNC4yMiA4MS41MSAyMTIuNzkgMjQuNjMgMjEwLjM1IDI0LjYzIDIxOC43NCA4Ni4wMyAyNDEuNzUgMjA4LjA3IDI0OC4yMyAyMTQuOTYiLz48cG9seWdvbiBjbGFzcz0iY2xzLTE3IiBwb2ludHM9IjIxMC4zNSAyNC42MyAyMDEuMDMgNzkuODIgMjIxLjE2IDgxLjUxIDIxMC4zNSAyNC42MyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTgiIHBvaW50cz0iMjIxLjE2IDgxLjUxIDIzMy44MSAxNDEuMDEgMjE0LjYzIDEyOC4zMSAyMjEuMTYgODEuNTEiLz48cG9seWdvbiBjbGFzcz0iY2xzLTE5IiBwb2ludHM9IjIwMS4wMyA3OS44MiAyMjEuMTYgODEuNTEgMjE0LjYzIDEyOC4zMSAyMDEuMDMgNzkuODIiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIwIiBwb2ludHM9IjIwMS4wMyA3OS44MiAxOTIuMTggMTE5LjM3IDIxNC42MyAxMjguMzEgMjAxLjAzIDc5LjgyIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yMSIgcG9pbnRzPSIyNDguMjMgMjE0Ljk2IDIxMi43MiAyMTAuNDMgMjMzLjgxIDE0MS4wMSAyNDguMjMgMjE0Ljk2Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yMiIgcG9pbnRzPSIyMzMuODEgMTQxLjAxIDIxNC42MyAxMjguMzEgMjEyLjcyIDIxMC40MyAyMzMuODEgMTQxLjAxIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yMyIgcG9pbnRzPSIyMTIuNzIgMjEwLjQzIDIwMC4yMiAxODYuMjIgMjE0LjYzIDEyOC4zMSAyMTIuNzIgMjEwLjQzIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yNCIgcG9pbnRzPSIxOTIuMTggMTE5LjM3IDIxNC42MyAxMjguMzEgMjAwLjIyIDE4Ni4yMiAxOTIuMTggMTE5LjM3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yNSIgcG9pbnRzPSIxNzYuODggMTgxLjU0IDE5Mi4xOCAxMTkuMzcgMjAwLjIyIDE4Ni4yMiAxNzYuODggMTgxLjU0Ii8+PC9nPjxnIGlkPSJ0b29sX2JveCIgZGF0YS1uYW1lPSJ0b29sIGJveCI+PHBvbHlnb24gY2xhc3M9ImNscy0yNiIgcG9pbnRzPSI5OC41NCAyMDAuMTkgMTQ0LjkgMTkyLjIgMTQ3Ljk1IDE4Ni42MSAxMzkuNjQgMTg1LjExIDE0Mi45NiAxODMuNTQgMTQwLjA1IDE4My41NCAxMzYuNTkgMTg0LjQ3IDEzMi4xNiAxODMuNTQgOTguNTQgMjAwLjE5Ii8+PHBhdGggY2xhc3M9ImNscy0yNyIgZD0iTTcxLjQsMTY5LjU2bDM2LjM0LTMuOTRzMTAuODQsNi40NCwxMC40Nyw2LjQ5LTEuMzIsMy42NC0xLjMyLDMuNjRsLTM1LDUuNzlaIi8+PHBhdGggY2xhc3M9ImNscy0yOCIgZD0iTTEwNy41LDE2OC4xOHM5Ljc3LDYuMyw5LjY5LDUuOTEsMS0yLDEtMmwtMTAuNDctNi40OVoiLz48cG9seWdvbiBjbGFzcz0iY2xzLTI5IiBwb2ludHM9IjcxIDE3Mi41MSAxMDcuNSAxNjguMTggMTA3Ljc0IDE2NS42MiA3MS40IDE2OS41NiA3MSAxNzIuNTEiLz48cG9seWdvbiBjbGFzcz0iY2xzLTI3IiBwb2ludHM9IjgzLjI1IDE3OC4yOSAxMTkuMjIgMTcyLjczIDEzNC43OSAxNzcuNDUgMTI4LjcgMTg0LjQgOTQuMDMgMTkxLjQ3IDgzLjI1IDE3OC4yOSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMjkiIHBvaW50cz0iMTE4LjcyIDE3Mi44MSA4My4yNSAxNzguMjkgOTQuMDMgMTkxLjQ3IDExOS42NyAxODAuNDkgMTE4LjcyIDE3Mi44MSIvPjxwYXRoIGNsYXNzPSJjbHMtMzAiIGQ9Ik0xMjEuMywxNzIuNjZhMy43NCwzLjc0LDAsMSwwLTMuNzktMi4zNWgwTDEwOSwxODYuNDRsMy45NCwyLjA3Wm0tMy4xMy0zLjYxLDEuMzEtMi41MSwyLjgzLS4xMSwxLjUxLDIuMzktMS4zMSwyLjUxLTIuODMuMTFaIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yOCIgcG9pbnRzPSI5OC41NCAyMDAuMTkgMTM1LjMgMTkxLjc5IDEzNC43OSAxNzcuNDUgOTcuNiAxODQuMzEgOTguNTQgMjAwLjE5Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0zMSIgcG9pbnRzPSI5Ny42IDE4NC4zMSA4My4yNSAxNzguMjkgODQuMjkgMTkzLjQ4IDk4LjU0IDIwMC4xOSA5Ny42IDE4NC4zMSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMzEiIHBvaW50cz0iODIuNjEgMTc4LjM3IDgxLjkxIDE4MS41NCA3MC42OSAxNzIuNzMgNzEuNCAxNjkuNTYgODIuNjEgMTc4LjM3Ii8+PHBhdGggY2xhc3M9ImNscy0zMiIgZD0iTTExNC44OCwxODVsLjQsMi41N3MuNzYsMS4zNiwxLjkxLDEuMTIuODgtMS44My44OC0xLjgzbC0uMy0yLjQxWiIvPjxwYXRoIGNsYXNzPSJjbHMtMzMiIGQ9Ik0xMTUuMjYsMTg1LjA2bC4zOSwyLjU3cy42LDEuMjksMS43NCwxLjA2LDEtMS43NywxLTEuNzdsLS4zLTIuNDFaIi8+PHBvbHlnb24gY2xhc3M9ImNscy0zNCIgcG9pbnRzPSIxMTguMTQgMTg0LjUxIDExNy43NyAxODQuNDcgMTE0Ljg5IDE4NS4wMiAxMTUuMjYgMTg1LjA2IDExOC4xNCAxODQuNTEiLz48L2c+PC9zdmc+';
|
|
28654
28518
|
|
|
28655
|
-
|
|
28519
|
+
const LuiErrorPage = (props) => {
|
|
28656
28520
|
return (React__default["default"].createElement("div", { className: 'LuiErrorPage' },
|
|
28657
28521
|
props.header,
|
|
28658
28522
|
React__default["default"].createElement("div", { className: 'Container' },
|
|
@@ -28663,36 +28527,36 @@ var LuiErrorPage = function (props) {
|
|
|
28663
28527
|
props.footer));
|
|
28664
28528
|
};
|
|
28665
28529
|
|
|
28666
|
-
|
|
28530
|
+
const userHasAnyPrivilege = (privileges, selectedFirm) => {
|
|
28667
28531
|
return (privileges.length === 0 ||
|
|
28668
28532
|
(selectedFirm !== undefined &&
|
|
28669
|
-
selectedFirm.privileges.filter(
|
|
28533
|
+
selectedFirm.privileges.filter((value) => privileges.indexOf(value) > -1)
|
|
28670
28534
|
.length > 0));
|
|
28671
28535
|
};
|
|
28672
|
-
|
|
28673
|
-
|
|
28536
|
+
const userIsInternal = (user) => {
|
|
28537
|
+
const loginType = user?.loginType.code || user?.loginType;
|
|
28674
28538
|
return loginType === 'INTN';
|
|
28675
28539
|
};
|
|
28676
28540
|
|
|
28677
28541
|
function useLOLUserContext() {
|
|
28678
28542
|
return React.useContext(LOLUserContext);
|
|
28679
28543
|
}
|
|
28680
|
-
|
|
28544
|
+
const LOLUserContext = React__default["default"].createContext({
|
|
28681
28545
|
user: undefined,
|
|
28682
28546
|
selectedFirm: undefined,
|
|
28683
|
-
changeFirm:
|
|
28547
|
+
changeFirm: (firmId) => {
|
|
28684
28548
|
console.error('Called changeFirm before UserContext loaded', firmId);
|
|
28685
28549
|
},
|
|
28686
|
-
isInternal:
|
|
28687
|
-
hasAnyPrivilege:
|
|
28550
|
+
isInternal: () => false,
|
|
28551
|
+
hasAnyPrivilege: () => false,
|
|
28688
28552
|
});
|
|
28689
28553
|
function LOLUserContextProvider(props) {
|
|
28690
|
-
|
|
28691
|
-
|
|
28692
|
-
|
|
28693
|
-
React.useEffect(
|
|
28554
|
+
const { isLoading, data, isError } = useGetUserInfo();
|
|
28555
|
+
const [selectedFirm, setSelectedFirm] = React.useState();
|
|
28556
|
+
const [ready, setReady] = React.useState(false);
|
|
28557
|
+
React.useEffect(() => {
|
|
28694
28558
|
// User data is still loading
|
|
28695
|
-
if (!
|
|
28559
|
+
if (!data?.user) {
|
|
28696
28560
|
return;
|
|
28697
28561
|
}
|
|
28698
28562
|
// Clear firm value if there are no firms
|
|
@@ -28703,23 +28567,22 @@ function LOLUserContextProvider(props) {
|
|
|
28703
28567
|
}
|
|
28704
28568
|
if (data.user.firms.length > 0 &&
|
|
28705
28569
|
(!getSelectedFirmIdCache() ||
|
|
28706
|
-
!data.user.firms.find(
|
|
28707
|
-
|
|
28570
|
+
!data.user.firms.find((firm) => firm.id === getSelectedFirmIdCache()))) {
|
|
28571
|
+
const firstFirm = data.user.firms[0];
|
|
28708
28572
|
setSelectedFirmCache(firstFirm.id, firstFirm.name);
|
|
28709
28573
|
setSelectedFirm(firstFirm);
|
|
28710
28574
|
setReady(true);
|
|
28711
28575
|
}
|
|
28712
28576
|
else {
|
|
28713
28577
|
// pull firm from cache and use it
|
|
28714
|
-
|
|
28715
|
-
|
|
28578
|
+
const selectedFirmIdFromCache = getSelectedFirmIdCache();
|
|
28579
|
+
const selectedFirmDerivedFromCache = data.user.firms.find((firm) => firm.id === selectedFirmIdFromCache);
|
|
28716
28580
|
setSelectedFirm(selectedFirmDerivedFromCache || undefined);
|
|
28717
28581
|
setReady(true);
|
|
28718
28582
|
}
|
|
28719
28583
|
}, [data]);
|
|
28720
|
-
|
|
28721
|
-
|
|
28722
|
-
var firm = (_a = data === null || data === void 0 ? void 0 : data.user) === null || _a === void 0 ? void 0 : _a.firms.find(function (f) {
|
|
28584
|
+
const changeFirm = React.useCallback((firmId) => {
|
|
28585
|
+
const firm = data?.user?.firms.find((f) => {
|
|
28723
28586
|
return f.id === firmId;
|
|
28724
28587
|
});
|
|
28725
28588
|
if (firm === undefined) {
|
|
@@ -28730,14 +28593,12 @@ function LOLUserContextProvider(props) {
|
|
|
28730
28593
|
setSelectedFirmCache(firm.id, firm.name);
|
|
28731
28594
|
setSelectedFirm(firm);
|
|
28732
28595
|
}, [data]);
|
|
28733
|
-
|
|
28734
|
-
|
|
28735
|
-
|
|
28736
|
-
|
|
28737
|
-
React.useEffect(function () {
|
|
28738
|
-
var onCachedFirmUpdate = function (event) {
|
|
28596
|
+
const isInternal = React.useCallback(() => userIsInternal(data?.user), [data]);
|
|
28597
|
+
const hasAnyPrivilege = React.useCallback((privileges) => userHasAnyPrivilege(privileges, selectedFirm), [selectedFirm]);
|
|
28598
|
+
React.useEffect(() => {
|
|
28599
|
+
const onCachedFirmUpdate = (event) => {
|
|
28739
28600
|
if (event.storageArea === localStorage && event.key === FIRM_KEY) {
|
|
28740
|
-
|
|
28601
|
+
const selectedFirmId = event.newValue;
|
|
28741
28602
|
if (selectedFirmId) {
|
|
28742
28603
|
changeFirm(selectedFirmId);
|
|
28743
28604
|
}
|
|
@@ -28748,7 +28609,7 @@ function LOLUserContextProvider(props) {
|
|
|
28748
28609
|
window.addEventListener('storage', onCachedFirmUpdate, false);
|
|
28749
28610
|
}
|
|
28750
28611
|
// cleanup listener on unmount
|
|
28751
|
-
return
|
|
28612
|
+
return () => {
|
|
28752
28613
|
window.removeEventListener('storage', onCachedFirmUpdate, false);
|
|
28753
28614
|
};
|
|
28754
28615
|
}, [ready, changeFirm]);
|
|
@@ -28762,10 +28623,10 @@ function LOLUserContextProvider(props) {
|
|
|
28762
28623
|
if (data && data.user && data.user.id) {
|
|
28763
28624
|
return (React__default["default"].createElement(LOLUserContext.Provider, { value: {
|
|
28764
28625
|
user: data.user,
|
|
28765
|
-
selectedFirm
|
|
28766
|
-
changeFirm
|
|
28767
|
-
isInternal
|
|
28768
|
-
hasAnyPrivilege
|
|
28626
|
+
selectedFirm,
|
|
28627
|
+
changeFirm,
|
|
28628
|
+
isInternal,
|
|
28629
|
+
hasAnyPrivilege,
|
|
28769
28630
|
} }, props.children));
|
|
28770
28631
|
}
|
|
28771
28632
|
else {
|
|
@@ -28774,41 +28635,24 @@ function LOLUserContextProvider(props) {
|
|
|
28774
28635
|
}
|
|
28775
28636
|
}
|
|
28776
28637
|
function useGetUserInfo() {
|
|
28777
|
-
|
|
28778
|
-
|
|
28779
|
-
|
|
28780
|
-
|
|
28781
|
-
|
|
28782
|
-
|
|
28783
|
-
url = "/auth/api/userinfo";
|
|
28784
|
-
return [4 /*yield*/, fetch(url)];
|
|
28785
|
-
case 1:
|
|
28786
|
-
res = _a.sent();
|
|
28787
|
-
return [4 /*yield*/, checkForStandardErrors(res)];
|
|
28788
|
-
case 2:
|
|
28789
|
-
_a.sent();
|
|
28790
|
-
return [4 /*yield*/, res.json()];
|
|
28791
|
-
case 3: return [2 /*return*/, _a.sent()];
|
|
28792
|
-
}
|
|
28793
|
-
});
|
|
28794
|
-
}); });
|
|
28638
|
+
return reactQuery.useQuery(`useGetUserInfo`, async () => {
|
|
28639
|
+
const url = `/auth/api/userinfo`;
|
|
28640
|
+
const res = await fetch(url);
|
|
28641
|
+
await checkForStandardErrors(res);
|
|
28642
|
+
return await res.json();
|
|
28643
|
+
});
|
|
28795
28644
|
}
|
|
28796
28645
|
function reAuthUser() {
|
|
28797
|
-
|
|
28798
|
-
window.location.assign(
|
|
28646
|
+
const redirectPath = `${window.location.pathname}${window.location.search}${window.location.hash}`;
|
|
28647
|
+
window.location.assign(`/auth/login?redirectPath=${encodeURIComponent(redirectPath)}`);
|
|
28799
28648
|
}
|
|
28800
|
-
function checkForStandardErrors(res) {
|
|
28801
|
-
|
|
28802
|
-
|
|
28803
|
-
|
|
28804
|
-
reAuthUser();
|
|
28805
|
-
}
|
|
28806
|
-
return [2 /*return*/];
|
|
28807
|
-
});
|
|
28808
|
-
});
|
|
28649
|
+
async function checkForStandardErrors(res) {
|
|
28650
|
+
if (res.status !== 200) {
|
|
28651
|
+
reAuthUser();
|
|
28652
|
+
}
|
|
28809
28653
|
}
|
|
28810
|
-
|
|
28811
|
-
|
|
28654
|
+
const FIRM_KEY = 'firmId';
|
|
28655
|
+
const FIRM_NAME_KEY = 'firmName';
|
|
28812
28656
|
function getSelectedFirmIdCache() {
|
|
28813
28657
|
return window.localStorage.getItem(FIRM_KEY);
|
|
28814
28658
|
}
|
|
@@ -28823,21 +28667,21 @@ function setSelectedFirmCache(firmId, firmName) {
|
|
|
28823
28667
|
}
|
|
28824
28668
|
}
|
|
28825
28669
|
|
|
28826
|
-
|
|
28827
|
-
|
|
28828
|
-
|
|
28670
|
+
const ClearableLuiTextInput = (props) => {
|
|
28671
|
+
const [currentValue, setCurrentValue] = React.useState(props.value ? props.value : '');
|
|
28672
|
+
const clear = () => {
|
|
28829
28673
|
setCurrentValue('');
|
|
28830
28674
|
if (props.onValueChange) {
|
|
28831
28675
|
props.onValueChange('');
|
|
28832
28676
|
}
|
|
28833
28677
|
};
|
|
28834
|
-
|
|
28835
|
-
return (React__default["default"].createElement(LuiTextInput,
|
|
28678
|
+
const cancelIcon = currentValue !== '' ? (React__default["default"].createElement(LuiIcon, { alt: "clear", name: "ic_cancel_clear", size: "lg", className: 'LuiTextInput-iconPosition', spanProps: { onClick: clear } })) : undefined;
|
|
28679
|
+
return (React__default["default"].createElement(LuiTextInput, { ...props, icon: cancelIcon, value: currentValue, onChange: (e) => {
|
|
28836
28680
|
setCurrentValue(e.target.value);
|
|
28837
28681
|
if (props.onValueChange) {
|
|
28838
28682
|
props.onValueChange(e.target.value);
|
|
28839
28683
|
}
|
|
28840
|
-
} }))
|
|
28684
|
+
} }));
|
|
28841
28685
|
};
|
|
28842
28686
|
|
|
28843
28687
|
/**
|
|
@@ -28846,42 +28690,42 @@ var ClearableLuiTextInput = function (props) {
|
|
|
28846
28690
|
* @param props
|
|
28847
28691
|
* @constructor
|
|
28848
28692
|
*/
|
|
28849
|
-
|
|
28850
|
-
|
|
28851
|
-
|
|
28693
|
+
const LuiFilterContainer = (props) => {
|
|
28694
|
+
const { renderFunction, filterFunction, showFilter = true, isFilterClearable = true, } = props;
|
|
28695
|
+
const [filter, setFilter] = React.useState('');
|
|
28852
28696
|
return (React__default["default"].createElement("div", null,
|
|
28853
28697
|
showFilter && (React__default["default"].createElement("div", { className: 'LuiFilterContainer-filter-container LuiDeprecatedForms' },
|
|
28854
28698
|
isFilterClearable && (React__default["default"].createElement(ClearableLuiTextInput, { label: 'Filter', inputProps: {
|
|
28855
|
-
placeholder: 'Type to filter'
|
|
28856
|
-
}, hideLabel: true, onValueChange:
|
|
28857
|
-
!isFilterClearable && (React__default["default"].createElement("input", { type: "text", placeholder: "Type to filter", value: filter, onChange:
|
|
28699
|
+
placeholder: 'Type to filter',
|
|
28700
|
+
}, hideLabel: true, onValueChange: (value) => setFilter(value) })),
|
|
28701
|
+
!isFilterClearable && (React__default["default"].createElement("input", { type: "text", placeholder: "Type to filter", value: filter, onChange: (e) => setFilter(e.target.value) })))),
|
|
28858
28702
|
renderFunction(filterFunction(filter))));
|
|
28859
28703
|
};
|
|
28860
28704
|
|
|
28861
28705
|
function useLOLGlobalClientRefContext() {
|
|
28862
28706
|
return React.useContext(LOLGlobalClientRefContext);
|
|
28863
28707
|
}
|
|
28864
|
-
|
|
28708
|
+
const LOLGlobalClientRefContext = React__default["default"].createContext({
|
|
28865
28709
|
clientRef: '',
|
|
28866
|
-
changeClientRef:
|
|
28710
|
+
changeClientRef: () => {
|
|
28867
28711
|
// no-op
|
|
28868
|
-
}
|
|
28712
|
+
},
|
|
28869
28713
|
});
|
|
28870
|
-
|
|
28871
|
-
|
|
28872
|
-
|
|
28873
|
-
|
|
28874
|
-
|
|
28875
|
-
|
|
28714
|
+
const LOLGlobalClientRefContextProvider = (props) => {
|
|
28715
|
+
const { useUserIdAsClientReference } = props;
|
|
28716
|
+
const { user, selectedFirm } = useLOLUserContext();
|
|
28717
|
+
const [clientRef, setClientRef] = React.useState('');
|
|
28718
|
+
const [lastSelectedFirmId, setLastSelectedFirmId] = React.useState(undefined);
|
|
28719
|
+
const changeClientRef = React.useCallback((clientRef) => {
|
|
28876
28720
|
setClientRef(clientRef);
|
|
28877
28721
|
setGlobalClientRefCache(clientRef);
|
|
28878
28722
|
}, []);
|
|
28879
|
-
React.useEffect(
|
|
28723
|
+
React.useEffect(() => {
|
|
28880
28724
|
if (!user) {
|
|
28881
28725
|
return;
|
|
28882
28726
|
}
|
|
28883
|
-
|
|
28884
|
-
|
|
28727
|
+
const cachedClientRef = getGlobalClientRefCache();
|
|
28728
|
+
let clientRef = '';
|
|
28885
28729
|
if (cachedClientRef === null && useUserIdAsClientReference) {
|
|
28886
28730
|
clientRef = user.id;
|
|
28887
28731
|
}
|
|
@@ -28890,9 +28734,9 @@ var LOLGlobalClientRefContextProvider = function (props) {
|
|
|
28890
28734
|
}
|
|
28891
28735
|
setClientRef(clientRef);
|
|
28892
28736
|
setGlobalClientRefCache(clientRef);
|
|
28893
|
-
setLastSelectedFirmId(selectedFirm
|
|
28737
|
+
setLastSelectedFirmId(selectedFirm?.id);
|
|
28894
28738
|
}, [user, selectedFirm, useUserIdAsClientReference]);
|
|
28895
|
-
React.useEffect(
|
|
28739
|
+
React.useEffect(() => {
|
|
28896
28740
|
if (!selectedFirm ||
|
|
28897
28741
|
!lastSelectedFirmId ||
|
|
28898
28742
|
selectedFirm.id === lastSelectedFirmId) {
|
|
@@ -28909,11 +28753,11 @@ var LOLGlobalClientRefContextProvider = function (props) {
|
|
|
28909
28753
|
useUserIdAsClientReference,
|
|
28910
28754
|
]);
|
|
28911
28755
|
return (React__default["default"].createElement(LOLGlobalClientRefContext.Provider, { value: {
|
|
28912
|
-
clientRef
|
|
28913
|
-
changeClientRef
|
|
28756
|
+
clientRef,
|
|
28757
|
+
changeClientRef,
|
|
28914
28758
|
} }, props.children));
|
|
28915
28759
|
};
|
|
28916
|
-
|
|
28760
|
+
const GLOBAL_CLIENT_REFERENCE_KEY = 'globalClientReference';
|
|
28917
28761
|
function getGlobalClientRefCache() {
|
|
28918
28762
|
return window.sessionStorage.getItem(GLOBAL_CLIENT_REFERENCE_KEY);
|
|
28919
28763
|
}
|
|
@@ -28926,17 +28770,16 @@ function setGlobalClientRefCache(clientReference) {
|
|
|
28926
28770
|
}
|
|
28927
28771
|
}
|
|
28928
28772
|
|
|
28929
|
-
|
|
28930
|
-
|
|
28931
|
-
|
|
28932
|
-
|
|
28933
|
-
|
|
28934
|
-
var clientRefElement = showClientRef ? (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
28773
|
+
const LOLFirmSwitcherMenu = ({ showClientRef = false, ...restOfProps }) => {
|
|
28774
|
+
const { user, selectedFirm, changeFirm, isInternal } = useLOLUserContext();
|
|
28775
|
+
const { clientRef } = useLOLGlobalClientRefContext();
|
|
28776
|
+
const firms = user.firms;
|
|
28777
|
+
const clientRefElement = showClientRef ? (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
28935
28778
|
React__default["default"].createElement("br", null),
|
|
28936
28779
|
React__default["default"].createElement("span", null,
|
|
28937
28780
|
"Client Ref: ",
|
|
28938
28781
|
clientRef))) : null;
|
|
28939
|
-
|
|
28782
|
+
const label = isInternal() ? (React__default["default"].createElement("div", { className: "LOLFirmSwitcherMenu-header" },
|
|
28940
28783
|
user.id,
|
|
28941
28784
|
clientRefElement)) : (React__default["default"].createElement("div", { className: "LOLFirmSwitcherMenu-header" },
|
|
28942
28785
|
selectedFirm && (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
@@ -28946,97 +28789,69 @@ var LOLFirmSwitcherMenu = function (_a) {
|
|
|
28946
28789
|
"User ID: ",
|
|
28947
28790
|
user.id),
|
|
28948
28791
|
clientRefElement));
|
|
28949
|
-
|
|
28792
|
+
const dropdownMenuProps = {
|
|
28793
|
+
...restOfProps,
|
|
28794
|
+
label,
|
|
28795
|
+
};
|
|
28950
28796
|
if (firms.length < 2) {
|
|
28951
|
-
return React__default["default"].createElement(LuiHeaderMenuItem,
|
|
28797
|
+
return React__default["default"].createElement(LuiHeaderMenuItem, { ...dropdownMenuProps });
|
|
28952
28798
|
}
|
|
28953
|
-
return (React__default["default"].createElement(LuiDropdownMenu,
|
|
28799
|
+
return (React__default["default"].createElement(LuiDropdownMenu, { ...dropdownMenuProps },
|
|
28954
28800
|
React__default["default"].createElement(LOLFirmSwitcherMenuContent, { firms: firms, selectedFirm: selectedFirm, changeFirm: changeFirm })));
|
|
28955
28801
|
};
|
|
28956
|
-
|
|
28957
|
-
|
|
28958
|
-
var showFilter = firms.length >= minimumFilterCount;
|
|
28802
|
+
const LOLFirmSwitcherMenuContent = ({ firms, selectedFirm, changeFirm, collapsible = false, minimumFilterCount = 5, }) => {
|
|
28803
|
+
const showFilter = firms.length >= minimumFilterCount;
|
|
28959
28804
|
return (React__default["default"].createElement(LuiDrawerMenuSection, { title: "Switch account", collapsible: collapsible && showFilter },
|
|
28960
|
-
React__default["default"].createElement(FirmSwitcher, { options: firms, selectedId: selectedFirm
|
|
28961
|
-
return [2 /*return*/, changeFirm(id)];
|
|
28962
|
-
}); }); }, showFilter: showFilter })));
|
|
28805
|
+
React__default["default"].createElement(FirmSwitcher, { options: firms, selectedId: selectedFirm?.id, onSelect: async (id) => changeFirm(id), showFilter: showFilter })));
|
|
28963
28806
|
};
|
|
28964
|
-
|
|
28965
|
-
|
|
28966
|
-
return (React__default["default"].createElement("div", { className: 'LOLFirmSwitcherMenu-option', onClick: function () { return onSelect(id); }, "aria-disabled": disabled, "data-testid": "firm-".concat(id) },
|
|
28807
|
+
const FirmOption = ({ value: { id, name }, onSelect, selected, disabled, }) => {
|
|
28808
|
+
return (React__default["default"].createElement("div", { className: 'LOLFirmSwitcherMenu-option', onClick: () => onSelect(id), "aria-disabled": disabled, "data-testid": `firm-${id}` },
|
|
28967
28809
|
React__default["default"].createElement("span", null, name),
|
|
28968
28810
|
selected && React__default["default"].createElement("i", { className: "material-icons-round" }, "check_circle")));
|
|
28969
28811
|
};
|
|
28970
|
-
|
|
28971
|
-
|
|
28972
|
-
|
|
28973
|
-
|
|
28974
|
-
|
|
28975
|
-
|
|
28976
|
-
|
|
28977
|
-
|
|
28978
|
-
|
|
28979
|
-
|
|
28980
|
-
|
|
28981
|
-
|
|
28982
|
-
setBusy(false);
|
|
28983
|
-
_a.label = 2;
|
|
28984
|
-
case 2: return [2 /*return*/];
|
|
28985
|
-
}
|
|
28986
|
-
});
|
|
28987
|
-
}); };
|
|
28988
|
-
var filterFunction = React.useCallback(function (filterString) {
|
|
28989
|
-
var upperCaseFilterString = filterString.trim().toUpperCase();
|
|
28990
|
-
return options.filter(function (firm) {
|
|
28991
|
-
return firm.name.toUpperCase().includes(upperCaseFilterString);
|
|
28992
|
-
});
|
|
28812
|
+
const FirmSwitcher = ({ options, selectedId, onSelect, showFilter = true, }) => {
|
|
28813
|
+
const [busy, setBusy] = React.useState(false);
|
|
28814
|
+
const onSelectInternal = async (optionId) => {
|
|
28815
|
+
if (!busy) {
|
|
28816
|
+
setBusy(true);
|
|
28817
|
+
await onSelect(optionId);
|
|
28818
|
+
setBusy(false);
|
|
28819
|
+
}
|
|
28820
|
+
};
|
|
28821
|
+
const filterFunction = React.useCallback((filterString) => {
|
|
28822
|
+
const upperCaseFilterString = filterString.trim().toUpperCase();
|
|
28823
|
+
return options.filter((firm) => firm.name.toUpperCase().includes(upperCaseFilterString));
|
|
28993
28824
|
}, [options]);
|
|
28994
|
-
|
|
28995
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null, filteredOptions.map(
|
|
28825
|
+
const renderFunction = (filteredOptions) => {
|
|
28826
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null, filteredOptions.map((option) => (React__default["default"].createElement(FirmOption, { key: option.id, value: option, selected: option.id === selectedId, onSelect: onSelectInternal, disabled: busy })))));
|
|
28996
28827
|
};
|
|
28997
28828
|
return (React__default["default"].createElement("div", { className: "LOLFirmSwitcherMenu" },
|
|
28998
28829
|
React__default["default"].createElement(LuiFilterContainer, { showFilter: showFilter, filterFunction: filterFunction, renderFunction: renderFunction })));
|
|
28999
28830
|
};
|
|
29000
28831
|
|
|
29001
|
-
|
|
29002
|
-
|
|
29003
|
-
|
|
28832
|
+
const LOLLogoutLink = (props) => {
|
|
28833
|
+
const redirectPathString = props.redirectPath();
|
|
28834
|
+
const { user } = useLOLUserContext();
|
|
29004
28835
|
if (!user) {
|
|
29005
28836
|
return null;
|
|
29006
28837
|
}
|
|
29007
|
-
|
|
29008
|
-
|
|
29009
|
-
|
|
29010
|
-
|
|
29011
|
-
|
|
29012
|
-
|
|
29013
|
-
|
|
29014
|
-
|
|
29015
|
-
|
|
29016
|
-
|
|
29017
|
-
|
|
29018
|
-
case 2:
|
|
29019
|
-
if (_a) {
|
|
29020
|
-
return [2 /*return*/];
|
|
29021
|
-
}
|
|
29022
|
-
return [4 /*yield*/, fetch('/auth/api/logout')];
|
|
29023
|
-
case 3:
|
|
29024
|
-
res = _b.sent();
|
|
29025
|
-
if (res.status === 200) {
|
|
29026
|
-
window.location.assign("/auth/login?redirectPath=".concat(redirectPathString));
|
|
29027
|
-
}
|
|
29028
|
-
return [2 /*return*/];
|
|
29029
|
-
}
|
|
29030
|
-
});
|
|
29031
|
-
}); };
|
|
29032
|
-
return React__default["default"].createElement(LuiDrawerMenuOption, { label: "Logout ".concat(user.id), onClick: logout });
|
|
28838
|
+
const logout = async () => {
|
|
28839
|
+
if (props.callBackBeforeLogout &&
|
|
28840
|
+
(await props.callBackBeforeLogout()) === false) {
|
|
28841
|
+
return;
|
|
28842
|
+
}
|
|
28843
|
+
const res = await fetch('/auth/api/logout');
|
|
28844
|
+
if (res.status === 200) {
|
|
28845
|
+
window.location.assign(`/auth/login?redirectPath=${redirectPathString}`);
|
|
28846
|
+
}
|
|
28847
|
+
};
|
|
28848
|
+
return React__default["default"].createElement(LuiDrawerMenuOption, { label: `Logout ${user.id}`, onClick: logout });
|
|
29033
28849
|
};
|
|
29034
28850
|
|
|
29035
|
-
|
|
29036
|
-
|
|
29037
|
-
|
|
29038
|
-
|
|
29039
|
-
var lastLoginISO = (_a = context === null || context === void 0 ? void 0 : context.user) === null || _a === void 0 ? void 0 : _a.lastLogin;
|
|
28851
|
+
const LOLUserLastLogin = () => {
|
|
28852
|
+
let lastLogin;
|
|
28853
|
+
const context = useLOLUserContext();
|
|
28854
|
+
const lastLoginISO = context?.user?.lastLogin;
|
|
29040
28855
|
lastLogin = lastLoginISO
|
|
29041
28856
|
? new Date(lastLoginISO).toLocaleString('en-NZ')
|
|
29042
28857
|
: null;
|
|
@@ -29050,11 +28865,11 @@ var LOLUserLastLogin = function () {
|
|
|
29050
28865
|
React__default["default"].createElement("span", null, "Not you? Please, call us on 0800 665 463"))));
|
|
29051
28866
|
};
|
|
29052
28867
|
|
|
29053
|
-
|
|
29054
|
-
|
|
29055
|
-
|
|
29056
|
-
|
|
29057
|
-
React.useEffect(
|
|
28868
|
+
const LOLActiveFirmMessage = (props) => {
|
|
28869
|
+
const { selectedFirm, user } = useLOLUserContext();
|
|
28870
|
+
const [visible, setVisible] = React.useState(false);
|
|
28871
|
+
const hide = props.showFrom !== 'xl' ? { from: props.showFrom || 'sm' } : undefined;
|
|
28872
|
+
React.useEffect(() => {
|
|
29058
28873
|
setVisible(true);
|
|
29059
28874
|
}, [selectedFirm]);
|
|
29060
28875
|
if (!selectedFirm || !visible || user.firms.length < 2) {
|
|
@@ -29064,7 +28879,7 @@ var LOLActiveFirmMessage = function (props) {
|
|
|
29064
28879
|
React__default["default"].createElement(LuiBannerContent, { level: 'info' },
|
|
29065
28880
|
"Active account is ",
|
|
29066
28881
|
selectedFirm.name,
|
|
29067
|
-
React__default["default"].createElement("button", { "aria-label": "Close dialog", onClick:
|
|
28882
|
+
React__default["default"].createElement("button", { "aria-label": "Close dialog", onClick: () => {
|
|
29068
28883
|
setVisible(false);
|
|
29069
28884
|
} },
|
|
29070
28885
|
React__default["default"].createElement("i", { className: "material-icons-round" }, "close")))));
|
|
@@ -29072,20 +28887,17 @@ var LOLActiveFirmMessage = function (props) {
|
|
|
29072
28887
|
|
|
29073
28888
|
var ExternalIcon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzk4OTE4OSI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03eiIvPjwvc3ZnPg==';
|
|
29074
28889
|
|
|
29075
|
-
|
|
29076
|
-
|
|
29077
|
-
|
|
29078
|
-
|
|
29079
|
-
|
|
29080
|
-
|
|
29081
|
-
|
|
29082
|
-
|
|
29083
|
-
|
|
29084
|
-
|
|
29085
|
-
|
|
29086
|
-
return [2 /*return*/];
|
|
29087
|
-
});
|
|
29088
|
-
}); };
|
|
28890
|
+
const LOLAuthorisedLink = (props) => {
|
|
28891
|
+
const { hasAnyPrivilege } = useLOLUserContext();
|
|
28892
|
+
const { icon, activeIcon, active, label, path, openExternally, anyPrivileges, } = props;
|
|
28893
|
+
const onClickHandler = async () => {
|
|
28894
|
+
if (openExternally) {
|
|
28895
|
+
window.open(path, '_blank');
|
|
28896
|
+
}
|
|
28897
|
+
else {
|
|
28898
|
+
window.location.assign(path);
|
|
28899
|
+
}
|
|
28900
|
+
};
|
|
29089
28901
|
if (!hasAnyPrivilege(anyPrivileges)) {
|
|
29090
28902
|
return null;
|
|
29091
28903
|
}
|
|
@@ -29114,26 +28926,26 @@ var TitlesIconActive = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy
|
|
|
29114
28926
|
|
|
29115
28927
|
function createLink(pathname, label, target, activeIcon, icon, anyPrivileges) {
|
|
29116
28928
|
return {
|
|
29117
|
-
label
|
|
28929
|
+
label,
|
|
29118
28930
|
path: target,
|
|
29119
|
-
icon
|
|
29120
|
-
activeIcon
|
|
28931
|
+
icon,
|
|
28932
|
+
activeIcon,
|
|
29121
28933
|
active: pathname.startsWith(target),
|
|
29122
|
-
anyPrivileges
|
|
29123
|
-
openExternally: true
|
|
28934
|
+
anyPrivileges,
|
|
28935
|
+
openExternally: true,
|
|
29124
28936
|
};
|
|
29125
28937
|
}
|
|
29126
|
-
|
|
29127
|
-
|
|
29128
|
-
|
|
29129
|
-
|
|
29130
|
-
|
|
29131
|
-
|
|
29132
|
-
|
|
28938
|
+
const SEARCH_LABEL = 'Search';
|
|
28939
|
+
const NOC_LABEL = 'Post registered NoC';
|
|
28940
|
+
const SURVEY_LABEL = 'Survey';
|
|
28941
|
+
const TITLES_LABEL = 'Titles';
|
|
28942
|
+
const LOLAppLauncherMenu = (props) => {
|
|
28943
|
+
const { user, isInternal } = useLOLUserContext();
|
|
28944
|
+
const { pathname, enableNOCLink = false, enableSurveyLink = false, enableTitlesLink = false, } = props;
|
|
29133
28945
|
if (!user) {
|
|
29134
28946
|
return null;
|
|
29135
28947
|
}
|
|
29136
|
-
|
|
28948
|
+
const links = [
|
|
29137
28949
|
createLink(pathname, SEARCH_LABEL, '/search', SearchIconActive, SearchIcon, isInternal() ? [] : ['prv_search_privilege', 'prv_spatial_view']),
|
|
29138
28950
|
];
|
|
29139
28951
|
if (!isInternal() && enableNOCLink) {
|
|
@@ -29177,13 +28989,13 @@ var LOLAppLauncherMenu = function (props) {
|
|
|
29177
28989
|
'prv_withdraw_dealing',
|
|
29178
28990
|
]));
|
|
29179
28991
|
}
|
|
29180
|
-
return (React__default["default"].createElement(LuiDrawerMenuSection, { title: "Launch app" }, links.map(
|
|
28992
|
+
return (React__default["default"].createElement(LuiDrawerMenuSection, { title: "Launch app" }, links.map((link) => (React__default["default"].createElement(LOLAuthorisedLink, { key: link.path, ...link })))));
|
|
29181
28993
|
};
|
|
29182
28994
|
|
|
29183
|
-
|
|
29184
|
-
|
|
29185
|
-
|
|
29186
|
-
|
|
28995
|
+
const LOLDrawerMenuFirmSwitcher = (props) => {
|
|
28996
|
+
const { minimumFilterCount } = props;
|
|
28997
|
+
const { user, selectedFirm, changeFirm } = useLOLUserContext();
|
|
28998
|
+
const firms = user?.firms;
|
|
29187
28999
|
if (!firms || !selectedFirm) {
|
|
29188
29000
|
return null;
|
|
29189
29001
|
}
|
|
@@ -29193,18 +29005,18 @@ var LOLDrawerMenuFirmSwitcher = function (props) {
|
|
|
29193
29005
|
return (React__default["default"].createElement(LOLFirmSwitcherMenuContent, { firms: firms, selectedFirm: selectedFirm, changeFirm: changeFirm, collapsible: true, minimumFilterCount: minimumFilterCount }));
|
|
29194
29006
|
};
|
|
29195
29007
|
|
|
29196
|
-
|
|
29008
|
+
const LOLDrawerMenu = (props) => {
|
|
29197
29009
|
return (React__default["default"].createElement(LuiDrawerMenu, { hasStickyHeader: props.hasStickyHeader },
|
|
29198
29010
|
React__default["default"].createElement("div", { className: "LOLDrawerMenu" },
|
|
29199
29011
|
React__default["default"].createElement("div", { className: "LOLDrawerMenu-contents" }, props.children),
|
|
29200
29012
|
React__default["default"].createElement("div", { className: "LOLDrawerMenu-footer" },
|
|
29201
29013
|
React__default["default"].createElement(LOLUserLastLogin, null)))));
|
|
29202
29014
|
};
|
|
29203
|
-
|
|
29204
|
-
|
|
29015
|
+
const LOLCommonDrawerMenu = (props) => {
|
|
29016
|
+
const { appSpecificLinks, appSpecificSections, path, hasStickyHeader, showRequestsLink, ...restOfProps } = props;
|
|
29205
29017
|
return (React__default["default"].createElement(LOLDrawerMenu, { hasStickyHeader: hasStickyHeader },
|
|
29206
29018
|
appSpecificSections,
|
|
29207
|
-
React__default["default"].createElement(LOLAppLauncherMenu,
|
|
29019
|
+
React__default["default"].createElement(LOLAppLauncherMenu, { pathname: path, ...restOfProps }),
|
|
29208
29020
|
React__default["default"].createElement(LOLDrawerMenuFirmSwitcher, { minimumFilterCount: 5 }),
|
|
29209
29021
|
showRequestsLink && (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
29210
29022
|
React__default["default"].createElement(LuiDrawerMenuDivider, null),
|
|
@@ -29215,24 +29027,24 @@ var LOLCommonDrawerMenu = function (props) {
|
|
|
29215
29027
|
React__default["default"].createElement(LuiDrawerMenuDivider, null),
|
|
29216
29028
|
React__default["default"].createElement(LOLCommonDrawerMenuAfterLinks, { path: path })));
|
|
29217
29029
|
};
|
|
29218
|
-
|
|
29219
|
-
|
|
29220
|
-
|
|
29221
|
-
|
|
29222
|
-
|
|
29030
|
+
const LOLCommonDrawerMenuAfterLinks = (props) => {
|
|
29031
|
+
const { isInternal } = useLOLUserContext();
|
|
29032
|
+
const { path } = props;
|
|
29033
|
+
const contextPath = path.substr(0, path.indexOf('/', 1));
|
|
29034
|
+
const gotoLink = (url) => {
|
|
29223
29035
|
window.location.assign(url);
|
|
29224
29036
|
};
|
|
29225
29037
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
29226
|
-
!isInternal() && (React__default["default"].createElement(LuiDrawerMenuOption, { label: "Change password", onClick:
|
|
29227
|
-
gotoLink(
|
|
29038
|
+
!isInternal() && (React__default["default"].createElement(LuiDrawerMenuOption, { label: "Change password", onClick: () => {
|
|
29039
|
+
gotoLink(`/manage/my-preferences?redirectPath=${encodeURIComponent(path)}`);
|
|
29228
29040
|
} })),
|
|
29229
|
-
React__default["default"].createElement(LOLLogoutLink, { redirectPath:
|
|
29041
|
+
React__default["default"].createElement(LOLLogoutLink, { redirectPath: () => contextPath })));
|
|
29230
29042
|
};
|
|
29231
|
-
|
|
29232
|
-
|
|
29043
|
+
const LOLCommonMenuRequestsLink = () => {
|
|
29044
|
+
const openRequestsApp = () => {
|
|
29233
29045
|
window.open('/requests', '_blank');
|
|
29234
29046
|
};
|
|
29235
|
-
return (React__default["default"].createElement(LuiDrawerMenuOption, { label: 'Create request', onClick:
|
|
29047
|
+
return (React__default["default"].createElement(LuiDrawerMenuOption, { label: 'Create request', onClick: () => {
|
|
29236
29048
|
openRequestsApp();
|
|
29237
29049
|
}, badge: React__default["default"].createElement("img", { src: ExternalIcon, alt: "Link opens in a new tab", style: { width: '16px', height: '16px', marginTop: '4px' } }) }));
|
|
29238
29050
|
};
|
|
@@ -32766,27 +32578,26 @@ styleInject(css_248z$2);
|
|
|
32766
32578
|
var css_248z$1 = ".tippy-box{border:1px transparent}.tippy-box[data-placement^=top]>.tippy-arrow:after{border-top-color:inherit;border-width:8px 8px 0;bottom:-8px;left:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:inherit;border-width:0 8px 8px;top:-8px;left:0}.tippy-box[data-placement^=left]>.tippy-arrow:after{border-left-color:inherit;border-width:8px 0 8px 8px;right:-8px;top:0}.tippy-box[data-placement^=right]>.tippy-arrow:after{border-width:8px 8px 8px 0;left:-8px;top:0;border-right-color:inherit}.tippy-box[data-placement^=top]>.tippy-svg-arrow>svg:first-child:not(:last-child){top:17px}.tippy-box[data-placement^=bottom]>.tippy-svg-arrow>svg:first-child:not(:last-child){bottom:17px}.tippy-box[data-placement^=left]>.tippy-svg-arrow>svg:first-child:not(:last-child){left:12px}.tippy-box[data-placement^=right]>.tippy-svg-arrow>svg:first-child:not(:last-child){right:12px}.tippy-arrow{border-color:inherit}.tippy-arrow:after{content:\"\";z-index:-1;position:absolute;border-color:transparent;border-style:solid}";
|
|
32767
32579
|
styleInject(css_248z$1);
|
|
32768
32580
|
|
|
32769
|
-
|
|
32770
|
-
|
|
32771
|
-
|
|
32772
|
-
|
|
32773
|
-
|
|
32581
|
+
let id = 0;
|
|
32582
|
+
const getKey = () => id++;
|
|
32583
|
+
const LuiTooltip = (props) => {
|
|
32584
|
+
const { children, message, placement, trigger, animation = true } = props;
|
|
32585
|
+
const id = `LuiToolTip_${React.useMemo(getKey, [])}`;
|
|
32774
32586
|
if (typeof message !== 'string') {
|
|
32775
32587
|
throw new Error('LuiTooltip message must be a string!');
|
|
32776
32588
|
}
|
|
32777
|
-
React.useEffect(
|
|
32778
|
-
tippy(
|
|
32589
|
+
React.useEffect(() => {
|
|
32590
|
+
tippy(`#${id}`, {
|
|
32779
32591
|
content: message,
|
|
32780
32592
|
arrow: true,
|
|
32781
|
-
trigger
|
|
32593
|
+
trigger,
|
|
32782
32594
|
theme: 'LUI',
|
|
32783
|
-
placement
|
|
32595
|
+
placement,
|
|
32784
32596
|
offset: [0, 24],
|
|
32785
|
-
animation
|
|
32597
|
+
animation,
|
|
32786
32598
|
});
|
|
32787
|
-
return
|
|
32788
|
-
|
|
32789
|
-
(_b = (_a = document.getElementById(id)) === null || _a === void 0 ? void 0 : _a._tippy) === null || _b === void 0 ? void 0 : _b.destroy();
|
|
32599
|
+
return () => {
|
|
32600
|
+
document.getElementById(id)?._tippy?.destroy();
|
|
32790
32601
|
};
|
|
32791
32602
|
}, [id, message, placement, trigger, animation]);
|
|
32792
32603
|
return React__default["default"].createElement("span", { id: id }, children);
|
|
@@ -32805,49 +32616,48 @@ var LuiTooltip = function (props) {
|
|
|
32805
32616
|
```
|
|
32806
32617
|
*/
|
|
32807
32618
|
function useClickedOutsideElement(refElement, handleClickOutside) {
|
|
32808
|
-
React__default["default"].useEffect(
|
|
32619
|
+
React__default["default"].useEffect(() => {
|
|
32809
32620
|
function onOutsideClicked(event) {
|
|
32810
|
-
|
|
32811
|
-
if (!
|
|
32621
|
+
const element = refElement.current;
|
|
32622
|
+
if (!element?.contains(event.target)) {
|
|
32812
32623
|
handleClickOutside();
|
|
32813
32624
|
}
|
|
32814
32625
|
}
|
|
32815
32626
|
document.addEventListener('mousedown', onOutsideClicked);
|
|
32816
|
-
return
|
|
32627
|
+
return () => {
|
|
32817
32628
|
document.removeEventListener('mousedown', onOutsideClicked);
|
|
32818
32629
|
};
|
|
32819
32630
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32820
32631
|
}, []);
|
|
32821
32632
|
}
|
|
32822
32633
|
|
|
32823
|
-
|
|
32634
|
+
const LuiBadge = (props) => (React__default["default"].createElement("p", { className: clsx('LuiBadge', props.size === 'sm' && 'LuiBadge--sm', props.size === 'lg' && 'LuiBadge--lg', props.backgroundFill && 'LuiBadge--fill', props.variation === 'warning' && 'LuiBadge--warning'), "aria-roledescription": props.ariaRoleDescription }, props.children));
|
|
32824
32635
|
|
|
32825
|
-
|
|
32636
|
+
const LuiSidePanelContext = React__default["default"].createContext({ setProps: () => undefined });
|
|
32826
32637
|
/* eslint-disable react/prop-types */
|
|
32827
|
-
|
|
32828
|
-
|
|
32829
|
-
|
|
32830
|
-
|
|
32831
|
-
|
|
32832
|
-
return function () {
|
|
32638
|
+
const LuiSidePanel = ({ children, onClose, width, top }) => {
|
|
32639
|
+
const { setProps } = React__default["default"].useContext(LuiSidePanelContext);
|
|
32640
|
+
React__default["default"].useEffect(() => {
|
|
32641
|
+
setProps({ children, onClose, width, top });
|
|
32642
|
+
return () => {
|
|
32833
32643
|
setProps(undefined);
|
|
32834
32644
|
};
|
|
32835
32645
|
}, [setProps, children, onClose, width, top]);
|
|
32836
32646
|
return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
32837
32647
|
};
|
|
32838
|
-
|
|
32839
|
-
|
|
32648
|
+
const LuiSidePanelContainer = (props) => {
|
|
32649
|
+
const { children, onClose, width = '50%', top = 60 } = props ?? {};
|
|
32840
32650
|
return (React__default["default"].createElement("section", { style: {
|
|
32841
32651
|
position: 'fixed',
|
|
32842
32652
|
right: 0,
|
|
32843
32653
|
bottom: 0,
|
|
32844
32654
|
top: top,
|
|
32845
32655
|
background: 'white',
|
|
32846
|
-
width: children ? width
|
|
32656
|
+
width: children ? width ?? '50%' : '0%',
|
|
32847
32657
|
transition: 'width 0.2s ease',
|
|
32848
32658
|
boxShadow: '-0.1em 0 0.4em rgba(0, 0, 0, 0.2)',
|
|
32849
32659
|
padding: 0,
|
|
32850
|
-
zIndex: 3
|
|
32660
|
+
zIndex: 3,
|
|
32851
32661
|
} },
|
|
32852
32662
|
children && (React__default["default"].createElement("button", { type: "button", "data-testid": "close", onClick: onClose, style: {
|
|
32853
32663
|
color: '#5e5e61',
|
|
@@ -32858,30 +32668,110 @@ var LuiSidePanelContainer = function (props) {
|
|
|
32858
32668
|
border: 'none',
|
|
32859
32669
|
display: 'flex',
|
|
32860
32670
|
cursor: 'pointer',
|
|
32861
|
-
borderBottomLeftRadius: '5px'
|
|
32671
|
+
borderBottomLeftRadius: '5px',
|
|
32862
32672
|
} },
|
|
32863
32673
|
React__default["default"].createElement(LuiIcon, { alt: "Close", name: "ic_clear", size: "lg", status: "interactive" }))),
|
|
32864
32674
|
children));
|
|
32865
32675
|
};
|
|
32866
|
-
|
|
32867
|
-
|
|
32868
|
-
|
|
32869
|
-
return (React__default["default"].createElement(LuiSidePanelContext.Provider, { value: { setProps: setProps } },
|
|
32676
|
+
const LuiSidePanelProvider = ({ children }) => {
|
|
32677
|
+
const [props, setProps] = React__default["default"].useState();
|
|
32678
|
+
return (React__default["default"].createElement(LuiSidePanelContext.Provider, { value: { setProps } },
|
|
32870
32679
|
children,
|
|
32871
|
-
React__default["default"].createElement(LuiSidePanelContainer,
|
|
32680
|
+
React__default["default"].createElement(LuiSidePanelContainer, { ...props })));
|
|
32872
32681
|
};
|
|
32873
32682
|
|
|
32874
32683
|
var css_248z = ".lui-switch-checkbox {\n height: 0;\n width: 0;\n visibility: hidden;\n}\n\n.lui-switch-label {\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n width: 40px;\n height: 20px;\n background: grey;\n border-radius: 40px;\n position: relative;\n transition: background-color 0.2s;\n}\n\n.lui-switch-label .lui-switch-button {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 18px;\n height: 16px;\n border-radius: 18px;\n transition: 0.2s;\n background: #fff;\n box-shadow: 0 0 2px 0 rgba(10, 10, 10, 0.29);\n}\n\n.lui-switch-checkbox:checked + .lui-switch-label .lui-switch-button {\n left: calc(100% - 2px);\n transform: translateX(-100%);\n}\n\n.lui-switch-label:active .lui-switch-button {\n width: 20px;\n}";
|
|
32875
32684
|
styleInject(css_248z);
|
|
32876
32685
|
|
|
32877
|
-
|
|
32878
|
-
|
|
32686
|
+
const LuiSwitchButton = (props) => {
|
|
32687
|
+
const generatedId = useGenerateOrDefaultId();
|
|
32879
32688
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
32880
|
-
React__default["default"].createElement("input",
|
|
32881
|
-
React__default["default"].createElement("label", { "data-testid":
|
|
32882
|
-
React__default["default"].createElement("span", { className:
|
|
32689
|
+
React__default["default"].createElement("input", { className: "lui-switch-checkbox", type: "checkbox", "data-testid": 'lui-switch-new', id: generatedId, ...props }),
|
|
32690
|
+
React__default["default"].createElement("label", { "data-testid": `label`, style: { background: props.checked ? '#007198' : 'gray' }, className: "lui-switch-label", htmlFor: generatedId },
|
|
32691
|
+
React__default["default"].createElement("span", { className: `lui-switch-button` }))));
|
|
32883
32692
|
};
|
|
32884
32693
|
|
|
32694
|
+
/******************************************************************************
|
|
32695
|
+
Copyright (c) Microsoft Corporation.
|
|
32696
|
+
|
|
32697
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
32698
|
+
purpose with or without fee is hereby granted.
|
|
32699
|
+
|
|
32700
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
32701
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
32702
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
32703
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
32704
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
32705
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
32706
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
32707
|
+
***************************************************************************** */
|
|
32708
|
+
/* global Reflect, Promise */
|
|
32709
|
+
|
|
32710
|
+
var extendStatics = function(d, b) {
|
|
32711
|
+
extendStatics = Object.setPrototypeOf ||
|
|
32712
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
32713
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
32714
|
+
return extendStatics(d, b);
|
|
32715
|
+
};
|
|
32716
|
+
|
|
32717
|
+
function __extends(d, b) {
|
|
32718
|
+
if (typeof b !== "function" && b !== null)
|
|
32719
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
32720
|
+
extendStatics(d, b);
|
|
32721
|
+
function __() { this.constructor = d; }
|
|
32722
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
32723
|
+
}
|
|
32724
|
+
|
|
32725
|
+
var __assign = function() {
|
|
32726
|
+
__assign = Object.assign || function __assign(t) {
|
|
32727
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
32728
|
+
s = arguments[i];
|
|
32729
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
32730
|
+
}
|
|
32731
|
+
return t;
|
|
32732
|
+
};
|
|
32733
|
+
return __assign.apply(this, arguments);
|
|
32734
|
+
};
|
|
32735
|
+
|
|
32736
|
+
function __rest(s, e) {
|
|
32737
|
+
var t = {};
|
|
32738
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
32739
|
+
t[p] = s[p];
|
|
32740
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
32741
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
32742
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32743
|
+
t[p[i]] = s[p[i]];
|
|
32744
|
+
}
|
|
32745
|
+
return t;
|
|
32746
|
+
}
|
|
32747
|
+
|
|
32748
|
+
function __read(o, n) {
|
|
32749
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
32750
|
+
if (!m) return o;
|
|
32751
|
+
var i = m.call(o), r, ar = [], e;
|
|
32752
|
+
try {
|
|
32753
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
32754
|
+
}
|
|
32755
|
+
catch (error) { e = { error: error }; }
|
|
32756
|
+
finally {
|
|
32757
|
+
try {
|
|
32758
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
32759
|
+
}
|
|
32760
|
+
finally { if (e) throw e.error; }
|
|
32761
|
+
}
|
|
32762
|
+
return ar;
|
|
32763
|
+
}
|
|
32764
|
+
|
|
32765
|
+
function __spreadArray(to, from, pack) {
|
|
32766
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
32767
|
+
if (ar || !(i in from)) {
|
|
32768
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
32769
|
+
ar[i] = from[i];
|
|
32770
|
+
}
|
|
32771
|
+
}
|
|
32772
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
32773
|
+
}
|
|
32774
|
+
|
|
32885
32775
|
var createDefinition = function (propNames) { return ({
|
|
32886
32776
|
isEnabled: function (props) { return propNames.some(function (name) { return !!props[name]; }); },
|
|
32887
32777
|
}); };
|
|
@@ -40439,10 +40329,10 @@ var AnimatePresence = function (_a) {
|
|
|
40439
40329
|
};
|
|
40440
40330
|
|
|
40441
40331
|
// import clsx from 'clsx';
|
|
40442
|
-
|
|
40443
|
-
|
|
40444
|
-
|
|
40445
|
-
|
|
40332
|
+
const LuiAccordicard = (props) => {
|
|
40333
|
+
const { defaultToOpen = false, children, headerContent } = props;
|
|
40334
|
+
const [isOpen, setIsOpen] = React.useState(defaultToOpen);
|
|
40335
|
+
const AccordicardContent = () => {
|
|
40446
40336
|
return (React__default["default"].createElement(motion.div, { className: "LuiAccordicard-contentWrapper", key: "content", initial: ['collapsed'], animate: "open", exit: "collapsed", variants: {
|
|
40447
40337
|
open: {
|
|
40448
40338
|
opacity: 1,
|
|
@@ -40451,14 +40341,14 @@ var LuiAccordicard = function (props) {
|
|
|
40451
40341
|
opacity: {
|
|
40452
40342
|
delay: 0.1,
|
|
40453
40343
|
duration: 0.6,
|
|
40454
|
-
ease: [0.04, 0.62, 0.23, 0.98]
|
|
40344
|
+
ease: [0.04, 0.62, 0.23, 0.98],
|
|
40455
40345
|
},
|
|
40456
40346
|
height: {
|
|
40457
40347
|
delay: 0,
|
|
40458
40348
|
duration: 0.2,
|
|
40459
|
-
ease: [0.04, 0.62, 0.23, 0.98]
|
|
40460
|
-
}
|
|
40461
|
-
}
|
|
40349
|
+
ease: [0.04, 0.62, 0.23, 0.98],
|
|
40350
|
+
},
|
|
40351
|
+
},
|
|
40462
40352
|
},
|
|
40463
40353
|
collapsed: {
|
|
40464
40354
|
opacity: 0,
|
|
@@ -40467,15 +40357,15 @@ var LuiAccordicard = function (props) {
|
|
|
40467
40357
|
opacity: {
|
|
40468
40358
|
delay: 0,
|
|
40469
40359
|
duration: 0.2,
|
|
40470
|
-
ease: [0.04, 0.62, 0.23, 0.98]
|
|
40360
|
+
ease: [0.04, 0.62, 0.23, 0.98],
|
|
40471
40361
|
},
|
|
40472
40362
|
height: {
|
|
40473
40363
|
delay: 0.1,
|
|
40474
40364
|
duration: 0.2,
|
|
40475
|
-
ease: [0.04, 0.62, 0.23, 0.98]
|
|
40476
|
-
}
|
|
40477
|
-
}
|
|
40478
|
-
}
|
|
40365
|
+
ease: [0.04, 0.62, 0.23, 0.98],
|
|
40366
|
+
},
|
|
40367
|
+
},
|
|
40368
|
+
},
|
|
40479
40369
|
} },
|
|
40480
40370
|
React__default["default"].createElement("div", { className: clsx('LuiAccordicard-content', isOpen ? 'LuiAccordicard-content--isOpen' : null) }, isOpen ? children : React__default["default"].createElement(React__default["default"].Fragment, null))));
|
|
40481
40371
|
};
|
|
@@ -40485,13 +40375,13 @@ var LuiAccordicard = function (props) {
|
|
|
40485
40375
|
React__default["default"].createElement(motion.header, { layout: true, initial: false, className: "LuiAccordicard-header" },
|
|
40486
40376
|
React__default["default"].createElement("div", { className: "LuiAccordicard-headerContent" }, headerContent)),
|
|
40487
40377
|
React__default["default"].createElement(AnimatePresence, { initial: false }, isOpen && React__default["default"].createElement(AccordicardContent, null)),
|
|
40488
|
-
React__default["default"].createElement("button", { "aria-label": isOpen ? 'Expanded' : 'Closed', className: "LuiAccordicard-trigger", onClick:
|
|
40378
|
+
React__default["default"].createElement("button", { "aria-label": isOpen ? 'Expanded' : 'Closed', className: "LuiAccordicard-trigger", onClick: () => setIsOpen(!isOpen) },
|
|
40489
40379
|
React__default["default"].createElement(LuiIcon, { className: clsx('LuiAccordicard-chevron', isOpen ? 'LuiAccordicard-chevron--isOpen' : null), name: 'ic_expand_more', alt: "expand", size: "md" }))));
|
|
40490
40380
|
};
|
|
40491
40381
|
|
|
40492
|
-
|
|
40493
|
-
|
|
40494
|
-
|
|
40382
|
+
const LuiAccordicardStatic = (props) => {
|
|
40383
|
+
const { defaultToOpen = false, children, headerContent } = props;
|
|
40384
|
+
const [isOpen, setIsOpen] = React.useState(defaultToOpen);
|
|
40495
40385
|
return (React__default["default"].createElement("div", { className: clsx('LuiAccordicardStatic', isOpen ? 'LuiAccordicardStatic--isOpen' : null, props.warning ? 'LuiAccordicardStatic--warning' : null, props.className) },
|
|
40496
40386
|
props.warning && (React__default["default"].createElement("div", { className: "LuiAccordicardStatic-sideBar" },
|
|
40497
40387
|
React__default["default"].createElement(LuiIcon, { className: "LuiAccordicardStatic-warningIcon", alt: "Accordicard warning", name: 'ic_warning', size: 'md' }))),
|
|
@@ -40499,7 +40389,7 @@ var LuiAccordicardStatic = function (props) {
|
|
|
40499
40389
|
React__default["default"].createElement("div", { className: "LuiAccordicardStatic-headerContent" }, headerContent)),
|
|
40500
40390
|
React__default["default"].createElement("div", { className: clsx('LuiAccordicardStatic-contentWrapper', isOpen ? 'LuiAccordicardStatic-contentWrapper--isOpen' : null) },
|
|
40501
40391
|
React__default["default"].createElement("div", { className: clsx('LuiAccordicardStatic-content', isOpen ? 'LuiAccordicardStatic-content--isOpen' : null) }, isOpen ? children : React__default["default"].createElement(React__default["default"].Fragment, null))),
|
|
40502
|
-
React__default["default"].createElement("button", { "aria-label": isOpen ? 'Expanded' : 'Closed', className: "LuiAccordicardStatic-trigger", onClick:
|
|
40392
|
+
React__default["default"].createElement("button", { "aria-label": isOpen ? 'Expanded' : 'Closed', className: "LuiAccordicardStatic-trigger", onClick: () => setIsOpen(!isOpen) },
|
|
40503
40393
|
React__default["default"].createElement(LuiIcon, { className: clsx('LuiAccordicardStatic-chevron', isOpen ? 'LuiAccordicardStatic-chevron--isOpen' : null), name: 'ic_expand_more', alt: "expand", title: "Expand and collapse panel", size: "md" }))));
|
|
40504
40394
|
};
|
|
40505
40395
|
|