UNPKG

313 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7require('core-js/modules/es.function.name');
8var _extends = _interopDefault(require('@babel/runtime-corejs3/helpers/extends'));
9var _objectWithoutProperties = _interopDefault(require('@babel/runtime-corejs3/helpers/objectWithoutProperties'));
10var React = require('react');
11var React__default = _interopDefault(React);
12var PropTypes = _interopDefault(require('prop-types'));
13var styled = require('styled-components');
14var styled__default = _interopDefault(styled);
15var _noop = _interopDefault(require('lodash/noop'));
16var _Object$defineProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/define-property'));
17var _Object$defineProperties = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/define-properties'));
18var _Object$getOwnPropertyDescriptors = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors'));
19var _forEachInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/for-each'));
20var _Object$getOwnPropertyDescriptor = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor'));
21var _filterInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/filter'));
22var _Object$getOwnPropertySymbols = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols'));
23var _Object$keys = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/keys'));
24var _slicedToArray = _interopDefault(require('@babel/runtime-corejs3/helpers/slicedToArray'));
25var _defineProperty = _interopDefault(require('@babel/runtime-corejs3/helpers/defineProperty'));
26var _mapInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/map'));
27var _spliceInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/splice'));
28var _indexOfInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/index-of'));
29var _toConsumableArray = _interopDefault(require('@babel/runtime-corejs3/helpers/toConsumableArray'));
30var AnimateHeight = _interopDefault(require('react-animate-height'));
31var ReactDOM = _interopDefault(require('react-dom'));
32var reactPopper = require('react-popper');
33var Transition = _interopDefault(require('react-transition-group/Transition'));
34var tinycolor = _interopDefault(require('tinycolor2'));
35require('get-root-node-polyfill/implement');
36var _setTimeout = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/set-timeout'));
37var _setInterval = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/set-interval'));
38var reactOverlays = require('react-overlays');
39var _concatInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/concat'));
40var _taggedTemplateLiteral = _interopDefault(require('@babel/runtime-corejs3/helpers/taggedTemplateLiteral'));
41var _debounce = _interopDefault(require('lodash/debounce'));
42var ReactModal = _interopDefault(require('react-modal'));
43require('core-js/modules/es.regexp.exec');
44require('core-js/modules/es.string.replace');
45var _Object$assign = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/assign'));
46var _everyInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/every'));
47var _Array$isArray = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/array/is-array'));
48var _regeneratorRuntime = _interopDefault(require('@babel/runtime-corejs3/regenerator'));
49require('regenerator-runtime/runtime');
50var _asyncToGenerator = _interopDefault(require('@babel/runtime-corejs3/helpers/asyncToGenerator'));
51var _findIndex = _interopDefault(require('lodash/findIndex'));
52var _parseInt = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/parse-int'));
53require('core-js/modules/es.object.to-string');
54require('core-js/modules/es.regexp.to-string');
55var _Reflect$construct = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/reflect/construct'));
56var _classCallCheck = _interopDefault(require('@babel/runtime-corejs3/helpers/classCallCheck'));
57var _createClass = _interopDefault(require('@babel/runtime-corejs3/helpers/createClass'));
58var _assertThisInitialized = _interopDefault(require('@babel/runtime-corejs3/helpers/assertThisInitialized'));
59var _inherits = _interopDefault(require('@babel/runtime-corejs3/helpers/inherits'));
60var _possibleConstructorReturn = _interopDefault(require('@babel/runtime-corejs3/helpers/possibleConstructorReturn'));
61var _getPrototypeOf = _interopDefault(require('@babel/runtime-corejs3/helpers/getPrototypeOf'));
62var MaskedInput = _interopDefault(require('react-text-mask'));
63var createautoCorrectedDatePipe = _interopDefault(require('text-mask-addons/dist/createAutoCorrectedDatePipe'));
64var createNumberMask = _interopDefault(require('text-mask-addons/dist/createNumberMask'));
65var _fillInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/fill'));
66var _includesInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/includes'));
67var _omit = _interopDefault(require('lodash/omit'));
68var _pick = _interopDefault(require('lodash/pick'));
69var dateFns = require('date-fns');
70var ReactDatePicker = _interopDefault(require('react-datepicker'));
71var _sliceInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/slice'));
72var _parseInt$1 = _interopDefault(require('lodash/parseInt'));
73var _isFinite = _interopDefault(require('lodash/isFinite'));
74var _findIndexInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/find-index'));
75var formatMessage = _interopDefault(require('format-message'));
76require('core-js/modules/es.symbol');
77require('core-js/modules/es.symbol.description');
78var _trimInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/trim'));
79
80var regular = {
81 'im-icon-accessibility': '600',
82 'im-icon-add': '601',
83 'im-icon-add-circle': '602',
84 'im-icon-agent': '603',
85 'im-icon-align-center': '604',
86 'im-icon-align-justify': '605',
87 'im-icon-align-left': '606',
88 'im-icon-align-right': '607',
89 'im-icon-archive': '608',
90 'im-icon-arrow-down': '609',
91 'im-icon-arrow-left': '60a',
92 'im-icon-arrow-right': '60b',
93 'im-icon-arrow-up': '60c',
94 'im-icon-asterisk': '60d',
95 'im-icon-attachment': '60e',
96 'im-icon-bell': '60f',
97 'im-icon-bicycle': '610',
98 'im-icon-bold': '611',
99 'im-icon-book': '612',
100 'im-icon-bookmark': '613',
101 'im-icon-boy': '614',
102 'im-icon-briefcase': '615',
103 'im-icon-bullhorn': '616',
104 'im-icon-calendar': '617',
105 'im-icon-camera': '618',
106 'im-icon-certificate': '619',
107 'im-icon-check-document': '61a',
108 'im-icon-checkbox': '61b',
109 'im-icon-checkbox-checked': '61c',
110 'im-icon-chevron-down': '61d',
111 'im-icon-chevron-left': '61e',
112 'im-icon-chevron-right': '61f',
113 'im-icon-chevron-up': '620',
114 'im-icon-circle-arrow-down': '621',
115 'im-icon-circle-arrow-left': '622',
116 'im-icon-circle-arrow-right': '623',
117 'im-icon-circle-arrow-up': '624',
118 'im-icon-cog': '625',
119 'im-icon-comment': '626',
120 'im-icon-copy': '627',
121 'im-icon-cut': '628',
122 'im-icon-dashboard': '629',
123 'im-icon-discussion': '62a',
124 'im-icon-dollar-sign': '62b',
125 'im-icon-double-chevron-down': '62c',
126 'im-icon-double-chevron-left': '62d',
127 'im-icon-double-chevron-right': '62e',
128 'im-icon-double-chevron-up': '62f',
129 'im-icon-download': '630',
130 'im-icon-download-alt': '631',
131 'im-icon-edit': '632',
132 'im-icon-edit-document': '633',
133 'im-icon-element-block': '634',
134 'im-icon-element-page': '635',
135 'im-icon-element-section': '636',
136 'im-icon-envelope': '637',
137 'im-icon-exclamation': '638',
138 'im-icon-exclamation-circle': '639',
139 'im-icon-exclamation-sign': '63a',
140 'im-icon-export': '63b',
141 'im-icon-external-link': '63c',
142 'im-icon-eye-closed': '63d',
143 'im-icon-eye-open': '63e',
144 'im-icon-federal': '63f',
145 'im-icon-file': '640',
146 'im-icon-file-open': '641',
147 'im-icon-fill': '642',
148 'im-icon-film': '643',
149 'im-icon-fire': '644',
150 'im-icon-flag-empty': '645',
151 'im-icon-flag-filled': '646',
152 'im-icon-flash': '647',
153 'im-icon-folder-close': '648',
154 'im-icon-folder-open': '649',
155 'im-icon-folder-up-level': '64a',
156 'im-icon-font': '64b',
157 'im-icon-form-agreement': '64c',
158 'im-icon-form-checkbox': '64d',
159 'im-icon-form-dropdown': '64e',
160 'im-icon-form-number': '64f',
161 'im-icon-form-radio': '650',
162 'im-icon-form-text': '651',
163 'im-icon-form-text-box': '652',
164 'im-icon-fullscreen': '653',
165 'im-icon-funnel': '654',
166 'im-icon-girl': '655',
167 'im-icon-globe': '656',
168 'im-icon-hand-down': '657',
169 'im-icon-hand-left': '658',
170 'im-icon-hand-right': '659',
171 'im-icon-hand-up': '65a',
172 'im-icon-health': '65b',
173 'im-icon-heart-empty': '65c',
174 'im-icon-heart-filled': '65d',
175 'im-icon-history': '65e',
176 'im-icon-home': '65f',
177 'im-icon-hourglass': '660',
178 'im-icon-household': '661',
179 'im-icon-inbox': '662',
180 'im-icon-indent-left': '663',
181 'im-icon-indent-right': '664',
182 'im-icon-info': '665',
183 'im-icon-info-circle': '666',
184 'im-icon-italic': '667',
185 'im-icon-leaf': '668',
186 'im-icon-list': '669',
187 'im-icon-list-numbered': '66a',
188 'im-icon-list-thumbnails': '66b',
189 'im-icon-list-unordered': '66c',
190 'im-icon-lock': '66d',
191 'im-icon-lock-open': '66e',
192 'im-icon-log-in': '66f',
193 'im-icon-log-out': '670',
194 'im-icon-man': '671',
195 'im-icon-map-marker': '672',
196 'im-icon-medical': '673',
197 'im-icon-menu-btn': '674',
198 'im-icon-minus': '675',
199 'im-icon-minus-circle': '676',
200 'im-icon-move': '677',
201 'im-icon-new-window': '678',
202 'im-icon-no-symbol': '679',
203 'im-icon-non-smoker': '67a',
204 'im-icon-ok': '67b',
205 'im-icon-ok-circle': '67c',
206 'im-icon-options-horizontal': '67d',
207 'im-icon-options-vertical': '67e',
208 'im-icon-paragraph': '67f',
209 'im-icon-paste': '680',
210 'im-icon-phone': '681',
211 'im-icon-picture': '682',
212 'im-icon-piggy-bank': '683',
213 'im-icon-play-circle': '684',
214 'im-icon-power': '685',
215 'im-icon-print': '686',
216 'im-icon-push-pin': '687',
217 'im-icon-question': '688',
218 'im-icon-question-circle': '689',
219 'im-icon-random': '68a',
220 'im-icon-read-message': '68b',
221 'im-icon-redo': '68c',
222 'im-icon-refresh': '68d',
223 'im-icon-remove': '68e',
224 'im-icon-remove-circle': '68f',
225 'im-icon-repeat': '690',
226 'im-icon-resize-full': '691',
227 'im-icon-resize-horizontal': '692',
228 'im-icon-resize-small': '693',
229 'im-icon-resize-vertical': '694',
230 'im-icon-retweet': '695',
231 'im-icon-road': '696',
232 'im-icon-rx': '697',
233 'im-icon-save': '698',
234 'im-icon-screenshot': '699',
235 'im-icon-search': '69a',
236 'im-icon-share': '69b',
237 'im-icon-shopping-cart': '69c',
238 'im-icon-smoker': '69d',
239 'im-icon-sort': '69e',
240 'im-icon-sort-alpha': '69f',
241 'im-icon-sort-alpha-reverse': '6a0',
242 'im-icon-sort-ascending': '6a1',
243 'im-icon-sort-descending': '6a2',
244 'im-icon-sort-num': '6a3',
245 'im-icon-sort-num-reverse': '6a4',
246 'im-icon-speak-to-expert': '6a5',
247 'im-icon-star-empty': '6a6',
248 'im-icon-star-filled': '6a7',
249 'im-icon-stats': '6a8',
250 'im-icon-switch': '6a9',
251 'im-icon-tag': '6aa',
252 'im-icon-tags': '6ab',
253 'im-icon-tasks': '6ac',
254 'im-icon-text-color': '6ad',
255 'im-icon-text-height': '6ae',
256 'im-icon-text-size': '6af',
257 'im-icon-text-width': '6b0',
258 'im-icon-thumbnails': '6b1',
259 'im-icon-thumbnails-large': '6b2',
260 'im-icon-thumbs-down': '6b3',
261 'im-icon-thumbs-up': '6b4',
262 'im-icon-time': '6b5',
263 'im-icon-transfer': '6b6',
264 'im-icon-trash': '6b7',
265 'im-icon-umbrella': '6b8',
266 'im-icon-undo': '6b9',
267 'im-icon-upload': '6ba',
268 'im-icon-user': '6bb',
269 'im-icon-user-shield': '6bc',
270 'im-icon-users': '6bd',
271 'im-icon-video': '6be',
272 'im-icon-voice-check': '6bf',
273 'im-icon-wallet': '6c0',
274 'im-icon-woman': '6c1',
275 'im-icon-wrench': '6c2',
276 'im-icon-zoom-in': '6c3',
277 'im-icon-zoom-out': '6c4',
278 'im-icon-keyhole-shield': '6c5',
279 'im-icon-security-checked': '6c6',
280 'im-icon-underline': '6c7',
281 'im-icon-header': '6c8',
282 'im-icon-hyperlink': '6c9',
283 'im-icon-money': '6ca',
284 'im-icon-profit': '6cb',
285 'im-icon-cash-in-hand': '6cc',
286 'im-icon-paycheque': '6cd',
287 'im-icon-rod-of-asclepius': '6ce',
288 'im-icon-tooth': '6cf',
289 'im-icon-speech-bubble': '6d0',
290 'im-icon-phone-analog': '6d1',
291 'im-icon-map-with-marker': '6d2',
292 'im-icon-sms': '6d3',
293 'im-icon-mailbox-closed-flag-down': '6d4',
294 'im-icon-moleskine': '6d5',
295 'im-icon-alarm-clock': '6d6',
296 'im-icon-stethoscope': '6d7',
297 'im-icon-compass': '6d8',
298 'im-icon-exit': '6d9',
299 'im-icon-logout-rounded-left': '6da',
300 'im-icon-bot': '6db',
301 'im-icon-calculator': '6dc',
302 'im-icon-divide': '6dd',
303 'im-icon-clinic': '6de',
304 'im-icon-hospital-3': '6df',
305 'im-icon-trust': '6e0',
306 'im-icon-clear-filters': '6e1',
307 'im-icon-glasses': '6e2',
308 'im-icon-purchase-order': '6e3',
309 'im-icon-urgent-message': '6e4',
310 'im-icon-desktop': '6e5',
311 'im-icon-confusion': '6e6',
312 'im-icon-idea': '6e7',
313 'im-icon-spouse': '6e8',
314 'im-icon-play': '6e9',
315 'im-icon-pause': '6ea',
316 'im-icon-skip-to-start': '6eb',
317 'im-icon-reply-arrow': '6ec'
318};
319
320var StyledIcon = styled__default.i(["display:inline-block;font-family:bds-func-icons !important;font-size:", ";font-style:normal;font-weight:inherit;font-variant:normal;line-height:1;speak:none;text-decoration:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:text-bottom;&:before{content:\"\\e", "\";}"], function (props) {
321 return props.fontSize;
322}, function (props) {
323 return props.content;
324});
325
326function Icon(_ref) {
327 var name = _ref.name,
328 size = _ref.size,
329 other = _objectWithoutProperties(_ref, ["name", "size"]);
330
331 var iconName = "im-icon-".concat(name);
332 var styledIconProps = {
333 content: regular[iconName],
334 fontSize: size !== undefined ? "".concat(size, "px") : 'inherit'
335 };
336 return (
337 /*#__PURE__*/
338 React__default.createElement(StyledIcon, _extends({
339 "aria-hidden": true
340 }, styledIconProps, other))
341 );
342}
343
344Icon.propTypes = process.env.NODE_ENV !== "production" ? {
345 /** Name of the icon to display */
346 name: PropTypes.string.isRequired,
347
348 /** Specify icon size in pixels */
349 size: PropTypes.number
350} : {};
351Icon.defaultProps = {
352 size: undefined
353};
354
355var _StyledDiv = styled__default("div")(function (p) {
356 return {
357 alignItems: 'center',
358 display: 'flex',
359 height: p._css,
360 justifyContent: 'center',
361 width: p._css2
362 };
363});
364
365var _StyledImg = styled__default("img")({
366 height: 'auto',
367 maxWidth: '100%'
368});
369
370function FullColorIcon(_ref) {
371 var name = _ref.name,
372 size = _ref.size,
373 props = _objectWithoutProperties(_ref, ["name", "size"]);
374
375 return (
376 /*#__PURE__*/
377 React__default.createElement(_StyledDiv, _extends({}, props, {
378 _css: size,
379 _css2: size
380 }),
381 /*#__PURE__*/
382 React__default.createElement(_StyledImg, {
383 src: "https://bdaim-webexcdn-p.azureedge.net/es-assets/images/full-color-icons/".concat(name, ".svg"),
384 alt: "".concat(name, " icon")
385 }))
386 );
387}
388FullColorIcon.propTypes = process.env.NODE_ENV !== "production" ? {
389 /** Name of the icon to display */
390 name: PropTypes.string.isRequired,
391
392 /** Specify icon size in pixels */
393 size: PropTypes.number
394} : {};
395FullColorIcon.defaultProps = {
396 size: undefined
397};
398
399var useTheme = function useTheme() {
400 return React.useContext(styled.ThemeContext);
401};
402
403// https://webaim.org/techniques/css/invisiblecontent/#absolutepositioning
404
405function screenReaderOnly(Component) {
406 var ScreenReaderOnly = styled__default(Component)(["position:absolute !important;left:-10000px;width:1px;height:1px;overflow:hidden;"]);
407 return ScreenReaderOnly;
408}
409
410var DismissButtonBase = styled__default.button(["background-color:transparent;border:0;cursor:pointer;display:flex;font-weight:bold;opacity:0.2;padding:0;&:hover,&:focus{opacity:0.5;}"]);
411var ScreenReaderText = screenReaderOnly('span');
412var DismissButton =
413/*#__PURE__*/
414React__default.forwardRef(function DismissButton(props, ref) {
415 return (
416 /*#__PURE__*/
417 React__default.createElement(DismissButtonBase, _extends({
418 "aria-label": "Close",
419 type: "button"
420 }, props, {
421 ref: ref
422 }),
423 /*#__PURE__*/
424 React__default.createElement(Icon, {
425 name: "remove"
426 }),
427 /*#__PURE__*/
428 React__default.createElement(ScreenReaderText, null, "Close"))
429 );
430});
431
432function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { keys.push.apply(keys, _Object$getOwnPropertySymbols(object)); } if (enumerableOnly) keys = _filterInstanceProperty(keys).call(keys, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
433
434function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; _forEachInstanceProperty(_context = ownKeys(source, true)).call(_context, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context2; _forEachInstanceProperty(_context2 = ownKeys(source)).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
435var NotificationIcon = styled__default(Icon)(["align-self:start;color:", ";display:none;@media (min-width:", "){display:inline;margin-right:8px;}"], function (props) {
436 return props.iconColor;
437}, function (props) {
438 return props.alwaysShowIcon ? 0 : props.theme.screenSize.tablet;
439});
440var Dismiss = styled__default(DismissButton)(["align-self:start;color:", ";font-weight:normal;opacity:0.8;i{font-size:27px;}"], function (props) {
441 return props.color.textColor;
442});
443var ContentWrapper = styled__default.div(["align-self:center;flex-grow:1;word-break:break-word;"]);
444
445function NotificationContent(props) {
446 var includeIcon = props.includeIcon,
447 isDismissable = props.isDismissable,
448 onDismiss = props.onDismiss,
449 children = props.children,
450 iconName = props.iconName,
451 iconColor = props.iconColor,
452 color = props.color,
453 dismissNotification = props.dismissNotification,
454 alwaysShowIcon = props.alwaysShowIcon,
455 rest = _objectWithoutProperties(props, ["includeIcon", "isDismissable", "onDismiss", "children", "iconName", "iconColor", "color", "dismissNotification", "alwaysShowIcon"]);
456
457 function dismiss() {
458 onDismiss();
459 dismissNotification();
460 }
461
462 return (
463 /*#__PURE__*/
464 React__default.createElement(React__default.Fragment, null, includeIcon &&
465 /*#__PURE__*/
466 React__default.createElement(NotificationIcon, {
467 name: iconName,
468 iconColor: iconColor,
469 size: 28,
470 alwaysShowIcon: alwaysShowIcon
471 }),
472 /*#__PURE__*/
473 React__default.createElement(ContentWrapper, rest, children), isDismissable &&
474 /*#__PURE__*/
475 React__default.createElement(Dismiss, {
476 onClick: dismiss,
477 color: color
478 }))
479 );
480}
481
482var Notification = styled__default.div(["align-items:center;background-color:", ";border-radius:2px;color:", ";display:flex;margin-bottom:25px;padding:15px;", " button[aria-expanded]{color:", ";}"], function (props) {
483 return props.variant.bgColor;
484}, function (props) {
485 return props.variant.textColor;
486}, function (props) {
487 return props.restyleAnchors ? "\n a {\n color: ".concat(props.variant.textColor, ";\n text-decoration: underline;\n\n &:hover {\n text-decoration: none;\n }\n }\n ") : "";
488}, function (props) {
489 return props.variant.textColor;
490});
491function useNotification() {
492 var styleType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'base';
493 return function BaseNotification(_ref) {
494 var role = _ref.role,
495 type = _ref.type,
496 children = _ref.children,
497 className = _ref.className,
498 style = _ref.style,
499 _ref$restyleAnchors = _ref.restyleAnchors,
500 restyleAnchors = _ref$restyleAnchors === void 0 ? true : _ref$restyleAnchors,
501 rest = _objectWithoutProperties(_ref, ["role", "type", "children", "className", "style", "restyleAnchors"]);
502
503 var theme = useTheme();
504 var color = theme.notificationStyles[type][styleType];
505 var iconName = theme.validationIconName[type];
506 var iconColor = styleType === 'base' ? theme.colors.white : theme.colors[type];
507
508 var notificationContentProps = _objectSpread({
509 color: color,
510 iconName: iconName,
511 iconColor: iconColor,
512 role: role
513 }, rest);
514
515 var _useState = React.useState(false),
516 _useState2 = _slicedToArray(_useState, 2),
517 isDismissed = _useState2[0],
518 setIsDismissed = _useState2[1];
519
520 function dismissNotification() {
521 setIsDismissed(true);
522 }
523
524 return !isDismissed &&
525 /*#__PURE__*/
526 React__default.createElement(Notification, {
527 variant: color,
528 className: className,
529 style: style,
530 restyleAnchors: restyleAnchors
531 },
532 /*#__PURE__*/
533 React__default.createElement(NotificationContent, _extends({
534 dismissNotification: dismissNotification
535 }, notificationContentProps), children));
536 };
537}
538
539var DefaultNotification = useNotification();
540
541function Notification$1(props) {
542 return (
543 /*#__PURE__*/
544 React__default.createElement(DefaultNotification, props)
545 );
546}
547
548Notification$1.propTypes = process.env.NODE_ENV !== "production" ? {
549 /** The type of notification to render */
550 type: PropTypes.oneOf(['success', 'info', 'warning', 'danger', 'advisor']).isRequired,
551
552 /** Display an icon in the notification on a screen >= 768px */
553 includeIcon: PropTypes.bool,
554
555 /** Display a dismiss button that will close the notification */
556 isDismissable: PropTypes.bool,
557 role: PropTypes.oneOf(['dialog', 'alert']),
558
559 /** Function to execute when the dialog is closed */
560 onDismiss: PropTypes.func,
561 children: PropTypes.node,
562
563 /** Allows the icon to display at all resolutions */
564 alwaysShowIcon: PropTypes.bool
565} : {};
566Notification$1.defaultProps = {
567 includeIcon: false,
568 isDismissable: false,
569 children: null,
570 role: 'dialog',
571 onDismiss: _noop,
572 alwaysShowIcon: false
573};
574
575var Notification$2 = useNotification('light');
576
577function LightNotification(props) {
578 return (
579 /*#__PURE__*/
580 React__default.createElement(Notification$2, props)
581 );
582}
583
584LightNotification.propTypes = process.env.NODE_ENV !== "production" ? {
585 /** The type of notification to render */
586 type: PropTypes.oneOf(['success', 'info', 'warning', 'danger', 'advisor']).isRequired,
587
588 /** Display an icon in the notification on a screen >= 768px */
589 includeIcon: PropTypes.bool,
590
591 /** Display a dismiss button that will close the notification */
592 isDismissable: PropTypes.bool,
593 role: PropTypes.oneOf(['dialog', 'alert']),
594
595 /** Function to execute when the dialog is closed */
596 onDismiss: PropTypes.func,
597 children: PropTypes.node,
598
599 /** Allows the icon to display at all resolutions */
600 alwaysShowIcon: PropTypes.bool
601} : {};
602LightNotification.defaultProps = {
603 includeIcon: false,
604 isDismissable: false,
605 children: null,
606 role: 'dialog',
607 onDismiss: _noop,
608 alwaysShowIcon: false
609};
610
611var Notification$3 = useNotification('messageOnly');
612
613function MessageNotification(props) {
614 return (
615 /*#__PURE__*/
616 React__default.createElement(Notification$3, props)
617 );
618}
619
620MessageNotification.propTypes = process.env.NODE_ENV !== "production" ? {
621 /** The type of notification to render */
622 type: PropTypes.oneOf(['success', 'info', 'warning', 'danger', 'advisor']).isRequired,
623
624 /** Display an icon in the notification on a screen >= 768px */
625 includeIcon: PropTypes.bool,
626
627 /** Display a dismiss button that will close the notification */
628 isDismissable: PropTypes.bool,
629 role: PropTypes.oneOf(['dialog', 'alert']),
630
631 /** Function to execute when the dialog is closed */
632 onDismiss: PropTypes.func,
633 children: PropTypes.node,
634
635 /** Allows the icon to display at all resolutions */
636 alwaysShowIcon: PropTypes.bool
637} : {};
638MessageNotification.defaultProps = {
639 includeIcon: false,
640 isDismissable: false,
641 children: null,
642 role: 'dialog',
643 onDismiss: _noop,
644 alwaysShowIcon: false
645};
646
647var propTypes = process.env.NODE_ENV !== "production" ? {
648 emphasizedText: PropTypes.string,
649 text: PropTypes.string.isRequired
650} : {};
651var defaultProps = {
652 emphasizedText: undefined
653};
654function InlineMessage(_ref) {
655 var emphasizedText = _ref.emphasizedText,
656 text = _ref.text;
657 return (
658 /*#__PURE__*/
659 React__default.createElement("span", null, emphasizedText !== undefined ?
660 /*#__PURE__*/
661 React__default.createElement("strong", null, emphasizedText) : null, ' ', text)
662 );
663}
664InlineMessage.propTypes = process.env.NODE_ENV !== "production" ? propTypes : {};
665InlineMessage.defaultProps = defaultProps;
666function Message(_ref2) {
667 var emphasizedText = _ref2.emphasizedText,
668 text = _ref2.text;
669 return (
670 /*#__PURE__*/
671 React__default.createElement("span", null, emphasizedText !== undefined ?
672 /*#__PURE__*/
673 React__default.createElement(React__default.Fragment, null,
674 /*#__PURE__*/
675 React__default.createElement("strong", null, emphasizedText),
676 /*#__PURE__*/
677 React__default.createElement("br", null)) : null, text)
678 );
679}
680Message.propTypes = process.env.NODE_ENV !== "production" ? propTypes : {};
681Message.defaultProps = defaultProps;
682
683var DrawerContext =
684/*#__PURE__*/
685React__default.createContext({});
686
687var HeadingBase = styled__default.h1(["background-color:", ";border-bottom:", ";color:", ";font-family:'Source Sans Pro','Segoe UI',Segoe,Calibri,Tahoma,sans-serif;font-size:", ";font-weight:300;line-height:1.1;margin-bottom:0.45em;margin-top:0;padding-bottom:", ";padding:", ";small{font-size:", ";line-height:1;}@media (min-width:", "){font-size:", ";}"], function (props) {
688 return props.isKnockoutStyle && props.theme.colors.primary;
689}, function (props) {
690 return props.underlineColor && "2px solid ".concat(props.underlineColor, ";");
691}, function (props) {
692 return props.isKnockoutStyle ? 'white' : 'inherit';
693}, function (props) {
694 return props.theme.font.headingMobile[props.adjustedSize];
695}, function (props) {
696 return props.underlineColor && '0.22em';
697}, function (props) {
698 return props.isKnockoutStyle && '20px 15px';
699}, function (props) {
700 return props.adjustedSize > 3 ? '75%' : '65%';
701}, function (props) {
702 return props.theme.screenSize.tablet;
703}, function (props) {
704 return props.theme.font.headingDesktop[props.adjustedSize];
705});
706
707function Heading(_ref) {
708 var children = _ref.children,
709 level = _ref.level,
710 size = _ref.size,
711 isKnockoutStyle = _ref.isKnockoutStyle,
712 underlineColor = _ref.underlineColor,
713 other = _objectWithoutProperties(_ref, ["children", "level", "size", "isKnockoutStyle", "underlineColor"]);
714
715 var adjustedSize = size || level;
716 var hLevel = "h".concat(level);
717 return (
718 /*#__PURE__*/
719 React__default.createElement(HeadingBase, _extends({
720 as: hLevel,
721 adjustedSize: adjustedSize,
722 isKnockoutStyle: isKnockoutStyle,
723 underlineColor: underlineColor
724 }, other), children)
725 );
726}
727
728Heading.propTypes = process.env.NODE_ENV !== "production" ? {
729 children: PropTypes.node,
730
731 /** Heading level element */
732 level: PropTypes.oneOf([1, 2, 3, 4, 5, 6]).isRequired,
733
734 /** Override the default font size with another level */
735 size: PropTypes.oneOf([1, 2, 3, 4, 5, 6]),
736
737 /** Alternate knockout-style header with a solid background */
738 isKnockoutStyle: PropTypes.bool,
739
740 /** Include an underline with the provided color */
741 underlineColor: PropTypes.string
742} : {};
743Heading.defaultProps = {
744 children: undefined,
745 size: undefined,
746 isKnockoutStyle: false,
747 underlineColor: null
748};
749var PageHeading = function PageHeading(props) {
750 return (
751 /*#__PURE__*/
752 React__default.createElement(Heading, _extends({
753 isKnockoutStyle: true,
754 level: 1
755 }, props))
756 );
757};
758
759function generateAlphaName() {
760 var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
761 var text = '';
762
763 for (var i = 0; i < 6; i++) {
764 text += possible.charAt(Math.floor(Math.random() * possible.length));
765 }
766
767 return text;
768}
769
770function useUniqueId(providedId) {
771 var idRef = React.useRef(providedId || generateAlphaName());
772 return idRef.current;
773}
774
775var PanelWrapper = styled__default.div(["border-bottom:1px solid ", ";"], function (props) {
776 return props.theme.colors.gray3;
777});
778var PanelButton = styled__default.button(["background:none;border:0;color:", ";cursor:pointer;display:flex;font-size:18px;justify-content:space-between;padding:10px 15px;width:100%;@media (hover:hover),(-ms-high-contrast:none){&:hover{background-color:", ";color:", ";}}"], function (props) {
779 return props.theme.colors.primary;
780}, function (props) {
781 return props.theme.colors.gray2;
782}, function (props) {
783 return props.theme.brandColors.brandPrimary1;
784});
785var PanelIcon = styled__default(Icon)(["margin-right:0.4em;position:relative;top:-2px;"]);
786var PanelBody = styled__default(function (_ref) {
787 var noPadding = _ref.noPadding,
788 rest = _objectWithoutProperties(_ref, ["noPadding"]);
789
790 return (
791 /*#__PURE__*/
792 React__default.createElement(AnimateHeight, rest)
793 );
794})(["background-color:", ";color:", ";> div{border-bottom:4px solid ", ";padding:", ";}"], function (props) {
795 return props.theme.colors.white;
796}, function (props) {
797 return props.theme.colors.gray9;
798}, function (props) {
799 return props.theme.colors.gray3;
800}, function (props) {
801 return props.noPadding ? '0' : '10px 10px 10px 40px';
802});
803
804function DrawerPanel(props) {
805 var children = props.children,
806 isOpen = props.isOpen,
807 noPadding = props.noPadding,
808 onItemClick = props.onItemClick,
809 title = props.title,
810 titleAside = props.titleAside,
811 headingLevel = props.headingLevel,
812 other = _objectWithoutProperties(props, ["children", "isOpen", "noPadding", "onItemClick", "title", "titleAside", "headingLevel"]);
813
814 var _React$useContext = React__default.useContext(DrawerContext),
815 openedIconName = _React$useContext.openedIconName,
816 closedIconName = _React$useContext.closedIconName;
817
818 var headingAriaId = "".concat(useUniqueId(other.id), "-heading");
819 var regionAriaId = "".concat(useUniqueId(other.id), "-region");
820 return (
821 /*#__PURE__*/
822 React__default.createElement(PanelWrapper, other,
823 /*#__PURE__*/
824 React__default.createElement("div", {
825 id: headingAriaId,
826 role: "heading",
827 "aria-level": headingLevel
828 },
829 /*#__PURE__*/
830 React__default.createElement(PanelButton, {
831 "aria-expanded": isOpen,
832 "aria-controls": regionAriaId,
833 onClick: function onClick() {
834 return onItemClick();
835 }
836 },
837 /*#__PURE__*/
838 React__default.createElement("span", null,
839 /*#__PURE__*/
840 React__default.createElement(PanelIcon, {
841 name: isOpen ? openedIconName : closedIconName
842 }), title), titleAside &&
843 /*#__PURE__*/
844 React__default.createElement("aside", null, titleAside))),
845 /*#__PURE__*/
846 React__default.createElement(PanelBody, {
847 "aria-labelledby": headingAriaId,
848 duration: 300,
849 height: isOpen ? 'auto' : 0,
850 id: regionAriaId,
851 noPadding: noPadding,
852 role: "region"
853 }, children))
854 );
855}
856
857DrawerPanel.propTypes = process.env.NODE_ENV !== "production" ? {
858 children: PropTypes.any.isRequired,
859
860 /** Title text displayed next to the open/close icon */
861 title: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.node]).isRequired,
862
863 /** Aside text/content displayed on the right side of the panel title */
864 titleAside: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
865
866 /** @ignore */
867 isOpen: PropTypes.bool,
868
869 /** Removes the default padding from the panel body */
870 noPadding: PropTypes.bool,
871
872 /** Set desired aria-level for heading */
873 headingLevel: Heading.propTypes.level,
874
875 /** @ignore */
876 onItemClick: PropTypes.func
877} : {};
878DrawerPanel.defaultProps = {
879 isOpen: false,
880 noPadding: false,
881 titleAside: undefined,
882 headingLevel: 2,
883 onItemClick: _noop
884};
885
886function ownKeys$1(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { keys.push.apply(keys, _Object$getOwnPropertySymbols(object)); } if (enumerableOnly) keys = _filterInstanceProperty(keys).call(keys, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
887
888function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; _forEachInstanceProperty(_context = ownKeys$1(source, true)).call(_context, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context2; _forEachInstanceProperty(_context2 = ownKeys$1(source)).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
889var StyledDrawer = styled__default.div(["background-color:", ";border-top:1px solid ", ";box-shadow:0 1px 1px ", ";margin-bottom:25px;"], function (props) {
890 return props.theme.colors.white;
891}, function (props) {
892 return props.theme.colors.gray3;
893}, function (props) {
894 return props.theme.colors.boxShadowLight;
895});
896
897function Drawer(props) {
898 var activeKeys = props.activeKeys,
899 children = props.children,
900 closedIconName = props.closedIconName,
901 isAccordion = props.isAccordion,
902 onActiveKeysChanged = props.onActiveKeysChanged,
903 openedIconName = props.openedIconName,
904 other = _objectWithoutProperties(props, ["activeKeys", "children", "closedIconName", "isAccordion", "onActiveKeysChanged", "openedIconName"]);
905
906 function _onItemClick(key) {
907 var nextActiveKeys = _toConsumableArray(activeKeys);
908
909 if (isAccordion) {
910 nextActiveKeys = nextActiveKeys[0] === key ? [] : [key];
911 } else {
912 var index = _indexOfInstanceProperty(nextActiveKeys).call(nextActiveKeys, key);
913
914 var isOpen = index > -1;
915
916 if (isOpen) {
917 _spliceInstanceProperty(nextActiveKeys).call(nextActiveKeys, index, 1);
918 } else {
919 nextActiveKeys.push(key);
920 }
921 }
922
923 onActiveKeysChanged(nextActiveKeys);
924 }
925
926 return (
927 /*#__PURE__*/
928 React__default.createElement(DrawerContext.Provider, {
929 value: {
930 openedIconName: openedIconName,
931 closedIconName: closedIconName
932 }
933 },
934 /*#__PURE__*/
935 React__default.createElement(StyledDrawer, other, _mapInstanceProperty(React.Children).call(React.Children, children, function (child, index) {
936 if (child) {
937 // If there is no key provided, use the panel order as default key
938 var key = child && child.key || String(index + 1);
939 var isOpen = false;
940
941 if (isAccordion) {
942 isOpen = activeKeys[0] === key;
943 } else {
944 isOpen = _indexOfInstanceProperty(activeKeys).call(activeKeys, key) > -1;
945 }
946
947 var childProps = _objectSpread$1(_objectSpread$1({}, child.props), {}, {
948 key: key,
949 isOpen: isOpen,
950 onItemClick: function onItemClick() {
951 return _onItemClick(key);
952 }
953 });
954
955 return (
956 /*#__PURE__*/
957 React__default.cloneElement(child, childProps)
958 );
959 }
960
961 return null;
962 })))
963 );
964}
965
966Drawer.propTypes = process.env.NODE_ENV !== "production" ? {
967 /** Set which panels are open */
968 activeKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
969
970 /** Usually only one or more Drawer.Panel elements */
971 children: PropTypes.node,
972
973 /** Override the default plus icon with another OE icon name */
974 closedIconName: PropTypes.string,
975
976 /** Only allows one DrawerPanel to be open at a time */
977 isAccordion: PropTypes.bool,
978
979 /** Function called when changing active keys */
980 onActiveKeysChanged: PropTypes.func.isRequired,
981
982 /** Override the default minus icon with another OE icon name */
983 openedIconName: PropTypes.string
984} : {};
985Drawer.defaultProps = {
986 activeKeys: [],
987 isAccordion: false,
988 closedIconName: 'add',
989 openedIconName: 'minus',
990 children: undefined
991};
992Drawer.Panel = DrawerPanel;
993
994var OrientationContext = /*#__PURE__*/
995React__default.createContext('stacked');
996
997var FieldsetBase = styled__default.div(["display:flex;flex-wrap:wrap;flex-direction:column;margin-bottom:25px;width:100%;> *:last-child{margin-bottom:0;}", ";"], function (props) {
998 return props.orientation === 'inline' && styled.css(["@media (min-width:", "){align-items:baseline;flex-direction:row;}"], props.theme.screenSize.tablet);
999});
1000var Legend = styled__default.div(["color:", ";flex:0 0 auto;font-size:21.6px;line-height:", ";margin:0 0 10px 0;width:100%;"], function (props) {
1001 return props.theme.colors.black;
1002}, function (props) {
1003 return props.theme.font.baseLineHeight;
1004});
1005
1006function Fieldset(props) {
1007 var legendContent = props.legendContent,
1008 children = props.children,
1009 other = _objectWithoutProperties(props, ["legendContent", "children"]);
1010
1011 var legendId = legendContent ? generateAlphaName() : undefined;
1012 var orientation = React__default.useContext(OrientationContext);
1013 return (
1014 /*#__PURE__*/
1015 React__default.createElement(FieldsetBase, _extends({
1016 role: "group",
1017 "aria-labelledby": legendId,
1018 orientation: orientation
1019 }, other), legendContent &&
1020 /*#__PURE__*/
1021 React__default.createElement(Legend, {
1022 id: legendId
1023 }, legendContent), children)
1024 );
1025}
1026
1027Fieldset.propTypes = process.env.NODE_ENV !== "production" ? {
1028 /** Determine whether or not to add a legend and what content to display */
1029 legendContent: PropTypes.node,
1030 children: PropTypes.node
1031} : {};
1032Fieldset.defaultProps = {
1033 legendContent: null,
1034 children: undefined
1035};
1036Fieldset.Legend = Legend;
1037
1038function ownKeys$2(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { keys.push.apply(keys, _Object$getOwnPropertySymbols(object)); } if (enumerableOnly) keys = _filterInstanceProperty(keys).call(keys, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
1039
1040function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; _forEachInstanceProperty(_context = ownKeys$2(source, true)).call(_context, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context2; _forEachInstanceProperty(_context2 = ownKeys$2(source)).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
1041
1042var Fade = function Fade(_ref) {
1043 var children = _ref.children,
1044 duration = _ref.duration,
1045 opacity = _ref.opacity,
1046 otherProps = _objectWithoutProperties(_ref, ["children", "duration", "opacity"]);
1047
1048 var transitionStyles = {
1049 transition: "opacity ".concat(duration, "ms linear"),
1050 opacity: 0
1051 };
1052 var stateStyles = {
1053 entering: {
1054 opacity: opacity
1055 },
1056 entered: {
1057 opacity: opacity
1058 }
1059 };
1060 return (
1061 /*#__PURE__*/
1062 React__default.createElement(Transition, _extends({}, otherProps, {
1063 timeout: duration
1064 }), function (state, innerProps) {
1065 return (
1066 /*#__PURE__*/
1067 React__default.cloneElement(children, _objectSpread$2(_objectSpread$2({}, innerProps), {}, {
1068 style: _objectSpread$2(_objectSpread$2(_objectSpread$2({}, children.props.style), transitionStyles), stateStyles[state])
1069 }))
1070 );
1071 })
1072 );
1073};
1074
1075Fade.propTypes = process.env.NODE_ENV !== "production" ? {
1076 children: PropTypes.any.isRequired,
1077 duration: PropTypes.number,
1078 opacity: PropTypes.number
1079} : {};
1080Fade.defaultProps = {
1081 duration: 150,
1082 opacity: 1
1083};
1084
1085function darken(color, percent) {
1086 return tinycolor(color).darken(percent).toHexString();
1087}
1088function getTextColor(bgColor) {
1089 var darkestColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'black';
1090 var lightestColor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'white';
1091 return tinycolor.readability(darkestColor, bgColor) > 10 ? darkestColor : lightestColor;
1092}
1093
1094var StyledButton = styled__default.button(["background-color:transparent;border:none;box-shadow:none;cursor:pointer;color:", ";font-size:inherit;line-height:", ";padding:0;text-decoration:underline;&:hover,&:focus,&:active{color:", ";text-decoration:none;}&:active{box-shadow:none;}&[disabled]:hover{color:", ";text-decoration:underline;}"], function (props) {
1095 return props.variant.textColor;
1096}, function (props) {
1097 return props.theme.font.baseLineHeight;
1098}, function (props) {
1099 return darken(props.variant.textColor, 10);
1100}, function (props) {
1101 return props.variant.textColor;
1102});
1103var LinkButton =
1104/*#__PURE__*/
1105React__default.forwardRef(function LinkButton(props, ref) {
1106 var children = props.children,
1107 styleType = props.styleType,
1108 other = _objectWithoutProperties(props, ["children", "styleType"]);
1109
1110 var theme = useTheme();
1111 var variant = theme.buttonStyles.linkButton.variant[styleType];
1112 return (
1113 /*#__PURE__*/
1114 React__default.createElement(StyledButton, _extends({
1115 ref: ref,
1116 variant: variant,
1117 type: "button"
1118 }, other), children)
1119 );
1120});
1121LinkButton.propTypes = process.env.NODE_ENV !== "production" ? {
1122 children: PropTypes.node.isRequired,
1123
1124 /** Select the color style of the button, types come from theme buttonStyles.linkButton */
1125 styleType: PropTypes.string
1126} : {};
1127LinkButton.defaultProps = {
1128 styleType: 'default'
1129};
1130
1131var StyledButton$1 = styled__default(LinkButton)(["text-decoration:", ";&:hover,:focus{text-decoration:", ";}"], function (props) {
1132 return props.suppressUnderline ? 'none' : "".concat(props.variant.textColor, " dashed underline");
1133}, function (props) {
1134 return props.suppressUnderline ? 'none' : "".concat(props.variant.textColor, " solid underline");
1135});
1136var PopoverLink =
1137/*#__PURE__*/
1138React__default.forwardRef(function PopoverLink(props, ref) {
1139 var children = props.children,
1140 styleType = props.styleType,
1141 suppressUnderline = props.suppressUnderline,
1142 other = _objectWithoutProperties(props, ["children", "styleType", "suppressUnderline"]);
1143
1144 var theme = useTheme();
1145 var variant = theme.buttonStyles.linkButton.variant[styleType];
1146 return (
1147 /*#__PURE__*/
1148 React__default.createElement(StyledButton$1, _extends({
1149 ref: ref,
1150 variant: variant,
1151 suppressUnderline: suppressUnderline
1152 }, other), children)
1153 );
1154});
1155PopoverLink.propTypes = process.env.NODE_ENV !== "production" ? {
1156 children: PropTypes.node.isRequired,
1157
1158 /** Select the color style of the button, types come from theme */
1159 styleType: PropTypes.string,
1160
1161 /** Hide underline from link. Useful for children like Icons */
1162 suppressUnderline: PropTypes.bool
1163} : {};
1164PopoverLink.defaultProps = {
1165 styleType: 'primary',
1166 suppressUnderline: false
1167};
1168
1169function useRootNode(initialRoot) {
1170 var _useState = React.useState(initialRoot),
1171 _useState2 = _slicedToArray(_useState, 2),
1172 rootNode = _useState2[0],
1173 setRootNode = _useState2[1];
1174
1175 var nodeRef = React.useCallback(function (node) {
1176 if (!node) return;
1177 var foundRoot = node.getRootNode();
1178 var targetNode = foundRoot.body || foundRoot;
1179 if (initialRoot !== targetNode) setRootNode(targetNode);
1180 }, []);
1181 return [rootNode, nodeRef];
1182}
1183function useRootNodeLocator(initialRoot) {
1184 var _useRootNode = useRootNode(initialRoot),
1185 _useRootNode2 = _slicedToArray(_useRootNode, 2),
1186 rootNode = _useRootNode2[0],
1187 rootNodeRef = _useRootNode2[1];
1188
1189 var RootNodeInput = React.useCallback(function () {
1190 return (
1191 /*#__PURE__*/
1192 React__default.createElement("input", {
1193 type: "hidden",
1194 ref: rootNodeRef
1195 })
1196 );
1197 }, []);
1198 return [rootNode, RootNodeInput];
1199}
1200
1201var TooltipBase = styled__default.div(["position:absolute;z-index:999;"]);
1202var TooltipInner = styled__default.div(["background-color:", ";border-radius:2px;color:", ";font-family:'Source Sans Pro','Segoe UI',Segoe,Calibri,Tahoma,sans-serif;font-size:15px;line-height:", ";max-width:250px;padding:3px 8px;text-align:left;"], function (props) {
1203 return props.theme.colors.primary;
1204}, function (props) {
1205 return props.theme.colors.white;
1206}, function (props) {
1207 return props.theme.font.baseLineHeight;
1208});
1209var TooltipArrowBase = styled__default.div(["border-color:transparent;border-style:solid;height:0;position:absolute;width:0;"]);
1210var TooltipTop = styled__default(TooltipBase)(["padding:5px 0;"]);
1211var TooltipRight = styled__default(TooltipBase)(["padding:0 5px;"]);
1212var TooltipBottom = styled__default(TooltipBase)(["padding:5px 0;"]);
1213var TooltipLeft = styled__default(TooltipBase)(["padding:0 5px;"]);
1214var TooltipArrowTop = styled__default(TooltipArrowBase)(["border-top-color:", ";border-width:5px 5px 0;bottom:0;"], function (props) {
1215 return props.theme.colors.primary;
1216});
1217var TooltipArrowRight = styled__default(TooltipArrowBase)(["border-right-color:", ";border-width:5px 5px 5px 0;left:0;"], function (props) {
1218 return props.theme.colors.primary;
1219});
1220var TooltipArrowBottom = styled__default(TooltipArrowBase)(["border-bottom-color:", ";border-width:0 5px 5px;top:0;"], function (props) {
1221 return props.theme.colors.primary;
1222});
1223var TooltipArrowLeft = styled__default(TooltipArrowBase)(["border-left-color:", ";border-width:5px 0 5px 5px;right:0;"], function (props) {
1224 return props.theme.colors.primary;
1225});
1226var ScreenReaderContent = screenReaderOnly('div');
1227
1228function Tooltip(props) {
1229 var _useState = React.useState(false),
1230 _useState2 = _slicedToArray(_useState, 2),
1231 show = _useState2[0],
1232 setShow = _useState2[1];
1233
1234 var name = props.name,
1235 disableHover = props.disableHover,
1236 disableFocus = props.disableFocus,
1237 position = props.position,
1238 content = props.content,
1239 styleType = props.styleType,
1240 children = props.children,
1241 other = _objectWithoutProperties(props, ["name", "disableHover", "disableFocus", "position", "content", "styleType", "children"]);
1242
1243 var TooltipStyled;
1244 var TooltipArrow;
1245 var tooltipId = name ? "es-tooltip__".concat(name) : undefined;
1246
1247 var _useRootNode = useRootNode(document.body),
1248 _useRootNode2 = _slicedToArray(_useRootNode, 2),
1249 rootNode = _useRootNode2[0],
1250 rootNodeRef = _useRootNode2[1];
1251
1252 switch (position) {
1253 case 'right':
1254 TooltipStyled = TooltipRight;
1255 TooltipArrow = TooltipArrowRight;
1256 break;
1257
1258 case 'bottom':
1259 TooltipStyled = TooltipBottom;
1260 TooltipArrow = TooltipArrowBottom;
1261 break;
1262
1263 case 'left':
1264 TooltipStyled = TooltipLeft;
1265 TooltipArrow = TooltipArrowLeft;
1266 break;
1267
1268 default:
1269 TooltipStyled = TooltipTop;
1270 TooltipArrow = TooltipArrowTop;
1271 break;
1272 }
1273
1274 function showTooltip() {
1275 setShow(true);
1276 }
1277
1278 function hideTooltip() {
1279 setShow(false);
1280 }
1281
1282 function toggleShow() {
1283 setShow(!show);
1284 }
1285
1286 function closeOnEscape(event) {
1287 if (event.keyCode === 27) {
1288 setShow(false);
1289 }
1290 }
1291
1292 var descriptionId = "".concat(useUniqueId(other.id), "-description");
1293 return (
1294 /*#__PURE__*/
1295 React__default.createElement(reactPopper.Manager, null,
1296 /*#__PURE__*/
1297 React__default.createElement(reactPopper.Reference, null, function (_ref) {
1298 var _ref2 = _ref.ref;
1299 return (
1300 /*#__PURE__*/
1301 React__default.createElement(PopoverLink, {
1302 ref: function ref(el) {
1303 _ref2(el);
1304
1305 rootNodeRef(el);
1306 },
1307 onBlur: hideTooltip,
1308 onFocus: !disableFocus ? showTooltip : undefined,
1309 onMouseEnter: !disableHover ? showTooltip : undefined,
1310 onMouseLeave: !disableHover ? hideTooltip : undefined,
1311 onKeyDown: closeOnEscape,
1312 onClick: toggleShow,
1313 "aria-describedby": descriptionId,
1314 styleType: styleType
1315 }, children)
1316 );
1317 }),
1318 /*#__PURE__*/
1319 React__default.createElement(ScreenReaderContent, {
1320 id: descriptionId
1321 }, content),
1322 /*#__PURE__*/
1323 ReactDOM.createPortal(
1324 /*#__PURE__*/
1325 React__default.createElement(reactPopper.Popper, {
1326 placement: position
1327 }, function (_ref3) {
1328 var ref = _ref3.ref,
1329 style = _ref3.style,
1330 placement = _ref3.placement,
1331 arrowProps = _ref3.arrowProps;
1332 return (
1333 /*#__PURE__*/
1334 React__default.createElement(Fade, {
1335 in: show,
1336 mountOnEnter: true,
1337 unmountOnExit: true
1338 },
1339 /*#__PURE__*/
1340 React__default.createElement(TooltipStyled, _extends({
1341 ref: ref,
1342 role: "tooltip",
1343 id: tooltipId,
1344 style: style,
1345 "aria-live": "polite"
1346 }, other),
1347 /*#__PURE__*/
1348 React__default.createElement(TooltipArrow, {
1349 ref: arrowProps.ref,
1350 style: arrowProps.style
1351 }),
1352 /*#__PURE__*/
1353 React__default.createElement(TooltipInner, null, content)))
1354 );
1355 }), rootNode))
1356 );
1357}
1358
1359Tooltip.propTypes = process.env.NODE_ENV !== "production" ? {
1360 name: PropTypes.string.isRequired,
1361 children: PropTypes.any.isRequired,
1362
1363 /** The text the tooltip displays */
1364 content: PropTypes.node.isRequired,
1365
1366 /** Set the position of the tooltip over the content */
1367 position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
1368
1369 /** Disables the default show onHover functionality */
1370 disableHover: PropTypes.bool,
1371
1372 /** Disables the default show onFocus functionality */
1373 disableFocus: PropTypes.bool,
1374
1375 /** Select the color style of the button, types come from theme */
1376 styleType: PropTypes.string
1377} : {};
1378Tooltip.defaultProps = {
1379 position: 'top',
1380 disableHover: false,
1381 disableFocus: false,
1382 styleType: undefined
1383};
1384
1385var StyledButton$2 = styled__default.button(["background-color:", ";border:2px solid transparent;border-color:", ";border-bottom-left-radius:", ";border-bottom-right-radius:", ";border-top-left-radius:", ";border-top-right-radius:", ";box-sizing:border-box;color:", ";cursor:pointer;display:", ";font-family:inherit;font-size:", ";font-weight:", ";line-height:", ";min-width:100px;padding-bottom:", ";padding-left:", ";padding-right:", ";padding-top:", ";position:relative;text-align:center;text-decoration:none;text-transform:", ";transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;user-select:none;vertical-align:middle;white-space:nowrap;width:", ";@media (min-width:", "){display:", ";width:", ";}@media (hover:hover),(-ms-high-contrast:none){&:hover{color:", ";background-color:", ";border-color:", ";text-decoration:none;}}&:focus{color:", ";background-color:", ";border-color:", ";box-shadow:0 1px 1px rgba(0,0,0,0.075),0 0 0 0.2rem ", ";outline:0;}&:active,&.pressed{color:", ";background-color:", ";border-color:", ";box-shadow:inset 0 3px 5px rgba(0,0,0,0.25);}&:active:focus,&.pressed:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,0.25),0 0 0 0.2rem ", ";}&[disabled]{color:#ccc;cursor:not-allowed;background-color:#e6e6e6;border-color:#e6e6e6;&:hover{background-color:#e6e6e6;border-color:#e6e6e6;color:#ccc;}> *{pointer-events:none;}}"], function (props) {
1386 return props.colors.bgColor;
1387}, function (props) {
1388 return props.colors.bgColor;
1389}, function (props) {
1390 return props.borderRadii.bottomLeft;
1391}, function (props) {
1392 return props.borderRadii.bottomRight;
1393}, function (props) {
1394 return props.borderRadii.topLeft;
1395}, function (props) {
1396 return props.borderRadii.topRight;
1397}, function (props) {
1398 return props.colors.textColor;
1399}, function (props) {
1400 return props.mobileBlock ? 'block' : 'inline-block';
1401}, function (props) {
1402 return props.buttonSize.fontSize;
1403}, function (props) {
1404 return props.buttonSize.fontWeight || 'normal';
1405}, function (props) {
1406 return props.buttonSize.lineHeight ? props.buttonSize.lineHeight : props.theme.font.baseLineHeight;
1407}, function (props) {
1408 return props.buttonSize.paddingBottom;
1409}, function (props) {
1410 return props.buttonSize.paddingSides;
1411}, function (props) {
1412 return props.buttonSize.paddingSides;
1413}, function (props) {
1414 return props.buttonSize.paddingTop;
1415}, function (props) {
1416 return props.buttonSize.textTransform ? props.buttonSize.textTransform : 'none';
1417}, function (props) {
1418 return props.mobileBlock ? '100%' : 'auto';
1419}, function (props) {
1420 return props.theme.screenSize.tablet;
1421}, function (props) {
1422 return props.block ? 'block' : 'inline-block';
1423}, function (props) {
1424 return props.block ? '100%' : 'auto';
1425}, function (props) {
1426 return props.colors.hoverTextColor;
1427}, function (props) {
1428 return props.colors.hoverBgColor;
1429}, function (props) {
1430 return props.colors.hoverBorderColor;
1431}, function (props) {
1432 return props.colors.hoverTextColor;
1433}, function (props) {
1434 return props.colors.hoverBgColor;
1435}, function (props) {
1436 return props.colors.hoverBorderColor;
1437}, function (props) {
1438 return props.colors.focusBoxShadowColor;
1439}, function (props) {
1440 return props.colors.activeTextColor;
1441}, function (props) {
1442 return props.colors.activeBgColor;
1443}, function (props) {
1444 return props.colors.activeBorderColor;
1445}, function (props) {
1446 return props.colors.focusBoxShadowColor;
1447});
1448var Button =
1449/*#__PURE__*/
1450React__default.forwardRef(function Button(_ref, ref) {
1451 var children = _ref.children,
1452 styleType = _ref.styleType,
1453 size = _ref.size,
1454 block = _ref.block,
1455 mobileBlock = _ref.mobileBlock,
1456 flatLeftEdge = _ref.flatLeftEdge,
1457 flatRightEdge = _ref.flatRightEdge,
1458 other = _objectWithoutProperties(_ref, ["children", "styleType", "size", "block", "mobileBlock", "flatLeftEdge", "flatRightEdge"]);
1459
1460 var theme = useTheme();
1461 var buttonSize = theme.buttonStyles.button.size[size];
1462 var variant = theme.buttonStyles.button.variant[styleType];
1463 var isInheritedStyle = styleType === 'inherited';
1464 var mobileBlockSetting = flatLeftEdge || flatRightEdge ? false : mobileBlock;
1465 var defaultRadius = buttonSize.borderRadius;
1466 var borderRadii = {
1467 topLeft: flatLeftEdge ? 0 : defaultRadius,
1468 topRight: flatRightEdge ? 0 : defaultRadius,
1469 bottomRight: flatRightEdge ? 0 : defaultRadius,
1470 bottomLeft: flatLeftEdge ? 0 : defaultRadius
1471 };
1472
1473 function getButtonColors() {
1474 if (isInheritedStyle) {
1475 return {
1476 bgColor: 'inherited',
1477 textColor: 'inherited',
1478 borderColor: 'inherited',
1479 hoverBgColor: 'inherited',
1480 focusBoxShadowColor: theme.colors.gray4,
1481 activeBgColor: 'inherited',
1482 activeTextColor: 'inherited',
1483 activeBorderColor: 'inherited',
1484 hoverTextColor: 'inherited'
1485 };
1486 }
1487
1488 var focusBoxShadowColor = tinycolor.mix(variant.bgColor, theme.colors.black, 14);
1489 focusBoxShadowColor.setAlpha(0.5);
1490 var calculatedButtonColors = {
1491 bgColor: variant.bgColor,
1492 textColor: getTextColor(variant.bgColor),
1493 borderColor: variant.bgColor,
1494 hoverBgColor: darken(variant.bgColor, 7.5),
1495 hoverBorderColor: darken(variant.bgColor, 9.9),
1496 focusBoxShadowColor: focusBoxShadowColor.toRgbString()
1497 };
1498 calculatedButtonColors.activeBgColor = darken(calculatedButtonColors.hoverBgColor, 2.5);
1499 calculatedButtonColors.activeTextColor = getTextColor(calculatedButtonColors.activeBgColor);
1500 calculatedButtonColors.activeBorderColor = darken(calculatedButtonColors.hoverBgColor, 5);
1501 calculatedButtonColors.hoverTextColor = getTextColor(calculatedButtonColors.hoverBgColor);
1502 return calculatedButtonColors;
1503 }
1504
1505 var buttonColors = getButtonColors();
1506 return (
1507 /*#__PURE__*/
1508 React__default.createElement(StyledButton$2, _extends({
1509 type: "button",
1510 block: block,
1511 mobileBlock: mobileBlockSetting,
1512 buttonSize: buttonSize,
1513 colors: buttonColors,
1514 ref: ref,
1515 borderRadii: borderRadii
1516 }, other), children)
1517 );
1518});
1519Button.propTypes = process.env.NODE_ENV !== "production" ? {
1520 children: PropTypes.node.isRequired,
1521
1522 /** Select the color style of the button, types come from theme buttonStyles.button */
1523 styleType: PropTypes.string,
1524 size: PropTypes.oneOf(['lg', 'default', 'sm', 'xs']),
1525
1526 /** Make the button's width the size of it's parent container */
1527 block: PropTypes.bool,
1528
1529 /** Override the default block mobile style */
1530 mobileBlock: PropTypes.bool,
1531
1532 /** Styles the Button with a flat left edge */
1533 flatLeftEdge: PropTypes.bool,
1534
1535 /** Styles the Button with a flat right edge */
1536 flatRightEdge: PropTypes.bool
1537} : {};
1538Button.defaultProps = {
1539 styleType: 'default',
1540 block: false,
1541 mobileBlock: true,
1542 size: 'default',
1543 flatLeftEdge: false,
1544 flatRightEdge: false
1545};
1546
1547var PopperBox = styled__default.div(["border:1px solid rgba(0,0,0,0.3);box-shadow:0 5px 10px rgba(0,0,0,0.3);border-radius:2px;margin:", "px;max-width:350px;min-width:270px;position:absolute;text-align:center;z-index:99999;"], function (props) {
1548 return props.arrowSize.marginSize;
1549});
1550var Arrow = styled__default.div(["position:absolute;&::before,&::after{border:solid transparent;content:'';position:absolute;}&[data-placement*='bottom']{top:0;left:0;margin-top:-", "px;&::before{border-width:", ";border-color:transparent;border-bottom-color:", ";margin-left:-", "px;}&::after{border-width:", ";border-color:transparent;border-bottom-color:", ";margin-left:-", "px;}}&[data-placement*='top']{&::before{border-width:", "px;border-color:transparent;border-top-color:", ";margin-left:-", "px;}&::after{border-width:", "px;border-color:transparent;border-top-color:", ";margin-left:-", "px;}}&[data-placement*='right']{margin-left:-", "px;&::before{border-width:", ";border-color:transparent;border-right-color:", ";margin-top:-", "px;}&::after{border-width:", ";border-color:transparent;border-right-color:", ";margin-top:-", "px;}}&[data-placement*='left']{right:0;&::before{border-width:", "px;border-color:transparent;border-left-color:", ";margin-top:-", "px;}&::after{border-width:", "px;border-color:transparent;border-left-color:", ";margin-top:-", "px;}}"], function (props) {
1551 return props.arrowSize.size;
1552}, function (props) {
1553 return props.arrowSize.bottomBorderWidth;
1554}, function (props) {
1555 return props.arrowSize.borderColor;
1556}, function (props) {
1557 return props.arrowSize.borderSize;
1558}, function (props) {
1559 return props.arrowSize.bottomWidth;
1560}, function (props) {
1561 return props.hasTitle ? props.theme.colors.primary : props.theme.colors.white;
1562}, function (props) {
1563 return props.arrowSize.size;
1564}, function (props) {
1565 return props.arrowSize.borderSize;
1566}, function (props) {
1567 return props.arrowSize.borderColor;
1568}, function (props) {
1569 return props.arrowSize.borderSize;
1570}, function (props) {
1571 return props.arrowSize.size;
1572}, function (props) {
1573 return props.theme.colors.white;
1574}, function (props) {
1575 return props.arrowSize.size;
1576}, function (props) {
1577 return props.arrowSize.size;
1578}, function (props) {
1579 return props.arrowSize.rightBorderWidth;
1580}, function (props) {
1581 return props.arrowSize.borderColor;
1582}, function (props) {
1583 return props.arrowSize.borderSize;
1584}, function (props) {
1585 return props.arrowSize.rightWidth;
1586}, function (props) {
1587 return props.theme.colors.white;
1588}, function (props) {
1589 return props.arrowSize.size;
1590}, function (props) {
1591 return props.arrowSize.borderSize;
1592}, function (props) {
1593 return props.arrowSize.borderColor;
1594}, function (props) {
1595 return props.arrowSize.borderSize;
1596}, function (props) {
1597 return props.arrowSize.size;
1598}, function (props) {
1599 return props.theme.colors.white;
1600}, function (props) {
1601 return props.arrowSize.size;
1602});
1603var arrowSizes = {
1604 sm: {
1605 size: '5',
1606 borderSize: '6',
1607 marginSize: '10',
1608 bottomWidth: '0 5px 5px',
1609 bottomBorderWidth: '0 6px 5px',
1610 rightWidth: '5px 5px 5px 0',
1611 rightBorderWidth: '6px 5px 6px 0',
1612 borderColor: 'rgba(0, 0, 0, 0.3)'
1613 },
1614 md: {
1615 size: '10',
1616 borderSize: '11',
1617 marginSize: '15',
1618 bottomWidth: '0 10px 10px',
1619 bottomBorderWidth: '0 11px 10px',
1620 rightWidth: '10px 10px 10px 0',
1621 rightBorderWidth: '11px 10px 11px 0',
1622 borderColor: 'rgba(0, 0, 0, 0.3)'
1623 },
1624 lg: {
1625 size: '20',
1626 borderSize: '21',
1627 marginSize: '30',
1628 bottomWidth: '0 20px 20px',
1629 bottomBorderWidth: '0 21px 20px',
1630 rightWidth: '20px 20px 20px 0',
1631 rightBorderWidth: '21px 20px 21px 0',
1632 borderColor: 'rgba(0, 0, 0, 0.3)'
1633 },
1634 none: {
1635 size: '0',
1636 borderSize: '0',
1637 marginSize: '10'
1638 }
1639};
1640
1641function getArrowValues(size) {
1642 switch (size) {
1643 case 'sm':
1644 return arrowSizes.sm;
1645
1646 case 'lg':
1647 return arrowSizes.lg;
1648
1649 case 'none':
1650 return arrowSizes.none;
1651
1652 default:
1653 return arrowSizes.md;
1654 }
1655}
1656
1657function Popup(props) {
1658 var name = props.name,
1659 trigger = props.trigger,
1660 children = props.children,
1661 position = props.position,
1662 arrowSize = props.arrowSize,
1663 hasTitle = props.hasTitle,
1664 transitionIn = props.transitionIn,
1665 transitionTimeout = props.transitionTimeout,
1666 disableFlipping = props.disableFlipping,
1667 popperRef = props.popperRef,
1668 enableEvents = props.enableEvents,
1669 strategy = props.strategy;
1670 var arrowValues = getArrowValues(arrowSize);
1671
1672 var _useRootNode = useRootNode(document.body),
1673 _useRootNode2 = _slicedToArray(_useRootNode, 2),
1674 rootNode = _useRootNode2[0],
1675 rootNodeRef = _useRootNode2[1];
1676
1677 return (
1678 /*#__PURE__*/
1679 React__default.createElement(reactPopper.Manager, null,
1680 /*#__PURE__*/
1681 React__default.createElement(reactPopper.Reference, null, function (_ref) {
1682 var _ref2 = _ref.ref;
1683 return (
1684 /*#__PURE__*/
1685 React__default.createElement("div", {
1686 className: "".concat(name, "-popper__trigger"),
1687 ref: function ref(el) {
1688 _ref2(el);
1689
1690 rootNodeRef(el);
1691 }
1692 }, trigger)
1693 );
1694 }),
1695 /*#__PURE__*/
1696 ReactDOM.createPortal(
1697 /*#__PURE__*/
1698 React__default.createElement(reactPopper.Popper, {
1699 className: "".concat(name, "-popper"),
1700 placement: position,
1701 modifiers: {
1702 preventOverflow: {
1703 boundariesElement: document.body
1704 },
1705 flip: {
1706 enabled: !disableFlipping,
1707 behavior: ['left', 'right', 'top', 'bottom', 'top']
1708 }
1709 },
1710 innerRef: popperRef,
1711 eventsEnabled: enableEvents,
1712 positionFixed: strategy === 'fixed'
1713 }, function (_ref3) {
1714 var ref = _ref3.ref,
1715 style = _ref3.style,
1716 placement = _ref3.placement,
1717 arrowProps = _ref3.arrowProps;
1718 return (
1719 /*#__PURE__*/
1720 React__default.createElement(Fade, {
1721 in: transitionIn,
1722 duration: transitionTimeout,
1723 mountOnEnter: true,
1724 unmountOnExit: true
1725 },
1726 /*#__PURE__*/
1727 React__default.createElement(PopperBox, {
1728 ref: ref,
1729 style: style,
1730 arrowSize: arrowValues
1731 }, children,
1732 /*#__PURE__*/
1733 React__default.createElement(Arrow, {
1734 ref: arrowProps.ref,
1735 "data-placement": placement,
1736 style: arrowProps.style,
1737 arrowSize: arrowValues,
1738 hasTitle: hasTitle
1739 })))
1740 );
1741 }), rootNode))
1742 );
1743}
1744
1745Popup.propTypes = process.env.NODE_ENV !== "production" ? {
1746 name: PropTypes.string,
1747 trigger: PropTypes.node,
1748 children: PropTypes.node,
1749 position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
1750 arrowSize: PropTypes.oneOf(['sm', 'lg', 'none', 'default']),
1751 transitionIn: PropTypes.bool,
1752 transitionTimeout: PropTypes.number,
1753 hasTitle: PropTypes.bool,
1754 disableFlipping: PropTypes.bool,
1755 popperRef: PropTypes.func,
1756 enableEvents: PropTypes.bool,
1757 strategy: PropTypes.oneOf(['absolute', 'fixed'])
1758} : {};
1759Popup.defaultProps = {
1760 name: '',
1761 trigger: undefined,
1762 children: undefined,
1763 position: 'bottom',
1764 arrowSize: 'default',
1765 transitionIn: false,
1766 transitionTimeout: 150,
1767 hasTitle: false,
1768 disableFlipping: false,
1769 popperRef: undefined,
1770 enableEvents: true,
1771 strategy: 'absolute'
1772};
1773
1774var RootCloseWrapper = function RootCloseWrapper(_ref) {
1775 var children = _ref.children,
1776 onRootClose = _ref.onRootClose,
1777 disabled = _ref.disabled,
1778 className = _ref.className;
1779 var ref = React.useRef();
1780 reactOverlays.useRootClose(ref, onRootClose, {
1781 disabled: disabled
1782 });
1783 return (
1784 /*#__PURE__*/
1785 React__default.createElement("div", {
1786 ref: ref,
1787 className: "root-close-wrapper ".concat(className)
1788 }, children)
1789 );
1790};
1791
1792var Container = styled__default.div(["display:inline-block;"]);
1793var PopoverHeader = styled__default.div(["background-color:", ";color:", ";display:flex;justify-content:space-between;line-height:", ";outline:none;"], function (props) {
1794 return props.hasTitle ? props.theme.colors.primary : props.theme.colors.white;
1795}, function (props) {
1796 return props.theme.colors.white;
1797}, function (props) {
1798 return props.theme.font.baseLineHeight;
1799});
1800var TitleBar = styled__default.h3(["flex:1 1;font-size:18px;margin:0;padding:8px 14px;text-align:left;"]);
1801var PopoverBody = styled__default.div(["background:", ";color:", ";font-size:18px;font-weight:normal;line-height:", ";padding:", ";text-align:right;"], function (props) {
1802 return props.theme.colors.white;
1803}, function (props) {
1804 return props.theme.colors.gray9;
1805}, function (props) {
1806 return props.theme.font.baseLineHeight;
1807}, function (props) {
1808 return props.hasAltCloseWithNoTitle ? '0 14px 8px' : '8px 14px';
1809});
1810var PopoverContent = styled__default.div(["margin-bottom:", ";text-align:left;"], function (props) {
1811 return props.showCloseButton ? '8px' : '0';
1812});
1813var PopoverCloseButton = styled__default(Button)(["display:inline-block;margin:5px 0;width:auto;"]);
1814var AltCloseButton = styled__default(DismissButton)(["color:", ";flex:0 1;margin-left:auto;padding:8px;"], function (props) {
1815 return props.hasTitle ? props.theme.colors.white : props.theme.colors.black;
1816});
1817var CloseHelpText = styled__default.span(["color:transparent;flex:none;height:1px;outline:0;width:1px;"]);
1818
1819function Popover(props) {
1820 var name = props.name,
1821 title = props.title,
1822 content = props.content,
1823 placement = props.placement,
1824 arrowSize = props.arrowSize,
1825 renderTrigger = props.renderTrigger,
1826 hasCloseButton = props.hasCloseButton,
1827 hasAltCloseButton = props.hasAltCloseButton,
1828 disableRootClose = props.disableRootClose,
1829 disableFlipping = props.disableFlipping,
1830 enableEvents = props.enableEvents,
1831 strategy = props.strategy;
1832 var hasTitle = title !== undefined;
1833 var hasAltCloseWithNoTitle = !hasTitle && hasAltCloseButton;
1834 var showCloseButton = hasCloseButton && !hasAltCloseButton;
1835 var isFirstRun = React.useRef(true);
1836 var triggerBtnRef = React.useRef(null);
1837
1838 var _popperRef = React.useRef(null);
1839
1840 var contentRef = React.useRef(null);
1841 var escMsgRef = React.useRef(null);
1842 var closeBtnRef = React.useRef(null);
1843 var timeoutRef = React.useRef(null);
1844
1845 var _useState = React.useState(false),
1846 _useState2 = _slicedToArray(_useState, 2),
1847 isOpen = _useState2[0],
1848 setIsOpen = _useState2[1];
1849
1850 function toggleShow(event) {
1851 event.preventDefault();
1852 event.stopPropagation();
1853 setIsOpen(!isOpen);
1854 }
1855
1856 function hidePopover(event) {
1857 if (isOpen) {
1858 if (event.type !== 'click') {
1859 triggerBtnRef.current.focus();
1860 }
1861
1862 setIsOpen(false);
1863 }
1864 }
1865
1866 function hidePopOnScroll() {
1867 _setInterval(function () {
1868 if (_popperRef.current) {
1869 var bounds = _popperRef.current.getBoundingClientRect();
1870
1871 var inViewport = bounds.top >= 0 && bounds.bottom <= window.innerHeight;
1872
1873 if (!inViewport && isOpen) {
1874 setIsOpen(false);
1875 }
1876 }
1877 }, 100);
1878 }
1879
1880 React.useEffect(function () {
1881 if (isFirstRun.current) {
1882 isFirstRun.current = false;
1883 return;
1884 }
1885
1886 if (timeoutRef.current !== null) {
1887 clearTimeout(timeoutRef.current);
1888 }
1889
1890 if (isOpen) {
1891 timeoutRef.current = _setTimeout(function () {
1892 if (closeBtnRef.current) {
1893 closeBtnRef.current.focus();
1894 } else if (escMsgRef.current) {
1895 escMsgRef.current.focus();
1896 }
1897 }, 100);
1898 } else {
1899 triggerBtnRef.current.focus();
1900 }
1901 }, [isOpen]);
1902 React.useEffect(function () {
1903 if (isOpen) {
1904 window.addEventListener('scroll', hidePopOnScroll);
1905 }
1906
1907 return function () {
1908 return window.removeEventListener('scroll', hidePopOnScroll);
1909 };
1910 }, [isOpen]);
1911 var closeButton =
1912 /*#__PURE__*/
1913 React__default.createElement(PopoverCloseButton, {
1914 onClick: toggleShow,
1915 ref: closeBtnRef
1916 }, "Close");
1917 var altCloseButton =
1918 /*#__PURE__*/
1919 React__default.createElement(AltCloseButton, {
1920 "aria-label": "Close",
1921 hasTitle: hasTitle,
1922 onClick: toggleShow,
1923 ref: closeBtnRef
1924 });
1925 return (
1926 /*#__PURE__*/
1927 React__default.createElement(Container, null,
1928 /*#__PURE__*/
1929 React__default.createElement(Popup, {
1930 name: name,
1931 trigger: renderTrigger({
1932 ref: triggerBtnRef,
1933 toggleShow: toggleShow,
1934 isOpen: isOpen
1935 }),
1936 position: placement,
1937 arrowSize: arrowSize,
1938 transitionIn: isOpen,
1939 hasTitle: hasTitle,
1940 disableFlipping: disableFlipping,
1941 popperRef: function popperRef(elem) {
1942 _popperRef.current = elem;
1943 },
1944 enableEvents: enableEvents,
1945 strategy: strategy
1946 },
1947 /*#__PURE__*/
1948 React__default.createElement(RootCloseWrapper, {
1949 onRootClose: hidePopover,
1950 disabled: disableRootClose
1951 },
1952 /*#__PURE__*/
1953 React__default.createElement("div", {
1954 role: "dialog",
1955 ref: contentRef
1956 },
1957 /*#__PURE__*/
1958 React__default.createElement(PopoverHeader, {
1959 hasTitle: hasTitle
1960 }, hasTitle &&
1961 /*#__PURE__*/
1962 React__default.createElement(TitleBar, null, title), hasAltCloseButton && altCloseButton,
1963 /*#__PURE__*/
1964 React__default.createElement(CloseHelpText, {
1965 tabIndex: -1,
1966 ref: escMsgRef,
1967 "aria-label": "Press escape to close the Popover"
1968 })),
1969 /*#__PURE__*/
1970 React__default.createElement(PopoverBody, {
1971 hasAltCloseWithNoTitle: hasAltCloseWithNoTitle
1972 },
1973 /*#__PURE__*/
1974 React__default.createElement(PopoverContent, {
1975 showCloseButton: showCloseButton
1976 }, content), showCloseButton && closeButton)))))
1977 );
1978}
1979
1980Popover.propTypes = process.env.NODE_ENV !== "production" ? {
1981 /** The name of the popover. Used for differentiating popovers */
1982 name: PropTypes.string.isRequired,
1983
1984 /** The text displayed in the popover title section */
1985 title: PropTypes.string,
1986
1987 /** The content displayed in the popover body */
1988 content: PropTypes.node.isRequired,
1989
1990 /** The placement of the popover in relation to the link */
1991 placement: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
1992
1993 /** The size of the arrow on the popover box */
1994 arrowSize: PropTypes.oneOf(['sm', 'lg', 'none', 'default']),
1995
1996 /** Prevents popover from closing when clicked outside of it */
1997 disableRootClose: PropTypes.bool,
1998
1999 /** Display a close button in the bottom right of the popover body */
2000 hasCloseButton: PropTypes.bool,
2001
2002 /** Display a close ('x') button in the popover title bar */
2003 hasAltCloseButton: PropTypes.bool,
2004
2005 /** Function returning a button component to be used as the popover trigger */
2006 renderTrigger: PropTypes.func.isRequired,
2007
2008 /** Disables popovers ability to change position to stay in viewport */
2009 disableFlipping: PropTypes.bool,
2010
2011 /** Enable event handlers provided by Popper.js */
2012 enableEvents: PropTypes.bool,
2013
2014 /** Sets the strategy for positioning the popover in Popper.js */
2015 strategy: PropTypes.oneOf(['absolute', 'fixed'])
2016} : {};
2017Popover.defaultProps = {
2018 placement: 'bottom',
2019 arrowSize: 'default',
2020 disableRootClose: false,
2021 hasCloseButton: false,
2022 hasAltCloseButton: false,
2023 disableFlipping: false,
2024 title: undefined,
2025 enableEvents: true,
2026 strategy: 'absolute'
2027};
2028
2029var useDisableBodyScroll = function useDisableBodyScroll(shouldDisableScroll) {
2030 React.useEffect(function () {
2031 var newStyle = 'overflow: hidden;';
2032
2033 var getCurrentStyle = function getCurrentStyle() {
2034 return document.body.getAttribute('style') || '';
2035 };
2036
2037 var scrollDisabled = false;
2038
2039 var disableScroll = function disableScroll() {
2040 var _context;
2041
2042 scrollDisabled = true;
2043 document.body.setAttribute('style', _concatInstanceProperty(_context = "".concat(getCurrentStyle(), " ")).call(_context, newStyle));
2044 };
2045
2046 var enableScroll = function enableScroll() {
2047 if (!scrollDisabled) return;
2048 scrollDisabled = false;
2049 document.body.setAttribute('style', // this will only replace one instance of newStyle, which is what we want.
2050 getCurrentStyle().replace(newStyle, ''));
2051 };
2052
2053 if (shouldDisableScroll) {
2054 disableScroll();
2055 } else {
2056 enableScroll();
2057 }
2058
2059 return enableScroll;
2060 }, [shouldDisableScroll]);
2061};
2062
2063var ModalContext =
2064/*#__PURE__*/
2065React__default.createContext({});
2066
2067var Header = styled__default.div(["align-items:baseline;background-color:", ";border-bottom:2px solid ", ";box-sizing:border-box;color:", ";display:flex;font-size:26px;justify-content:space-between;padding:15px;.small &{@media (min-width:", "){position:static;width:unset;}}.medium &{@media (min-width:", "){position:static;width:unset;}}.large &{@media (min-width:", "){position:static;width:unset;}}"], function (props) {
2068 return props.theme.colors.white;
2069}, function (props) {
2070 return props.theme.brandColors.primary3;
2071}, function (props) {
2072 return props.theme.colors.gray9;
2073}, function (props) {
2074 return props.theme.screenSize.phone;
2075}, function (props) {
2076 return props.theme.screenSize.tablet;
2077}, function (props) {
2078 return props.theme.screenSize.desktop;
2079});
2080var Title = styled__default(Heading)(["margin:0;"]);
2081var DismissModal = styled__default(DismissButton)(["align-self:center;color:", ";font-size:18px;"], function (props) {
2082 return props.theme.colors.black;
2083});
2084
2085function ModalHeader(props) {
2086 var hideCloseButton = props.hideCloseButton,
2087 children = props.children,
2088 level = props.level,
2089 otherProps = _objectWithoutProperties(props, ["hideCloseButton", "children", "level"]);
2090
2091 var _useContext = React.useContext(ModalContext),
2092 onHide = _useContext.onHide,
2093 ariaId = _useContext.ariaId;
2094
2095 return (
2096 /*#__PURE__*/
2097 React__default.createElement(Header, otherProps,
2098 /*#__PURE__*/
2099 React__default.createElement(Title, {
2100 id: ariaId,
2101 level: level
2102 }, children), !hideCloseButton &&
2103 /*#__PURE__*/
2104 React__default.createElement(DismissModal, {
2105 onClick: onHide
2106 }))
2107 );
2108}
2109
2110ModalHeader.propTypes = process.env.NODE_ENV !== "production" ? {
2111 /** Specify whether the modal header should contain a close button */
2112 hideCloseButton: PropTypes.bool,
2113 children: PropTypes.any,
2114 level: PropTypes.oneOf([1, 2, 3, 4, 5, 6]),
2115 ref: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
2116 current: PropTypes.any
2117 })])
2118} : {};
2119ModalHeader.defaultProps = {
2120 hideCloseButton: false,
2121 children: undefined,
2122 level: 4,
2123 ref: null
2124};
2125
2126var ModalBody = styled__default.div(["color:", ";padding:15px;.small &{@media (min-width:", "){margin-top:unset;}}.medium &{@media (min-width:", "){margin-top:unset;}}.large &{@media (min-width:", "){margin-top:unset;}}"], function (props) {
2127 return props.theme.colors.gray9;
2128}, function (props) {
2129 return props.theme.screenSize.phone;
2130}, function (props) {
2131 return props.theme.screenSize.tablet;
2132}, function (props) {
2133 return props.theme.screenSize.desktop;
2134});
2135
2136var ModalFooter = styled__default.div(["align-items:baseline;display:flex;padding:15px 15px 55px;text-align:right;button{width:auto;}@media (min-width:", "){padding:15px 15px 19px;}"], function (props) {
2137 return props.theme.screenSize.tablet;
2138});
2139
2140function _templateObject() {
2141 var data = _taggedTemplateLiteral(["\n .", " {\n .background-overlay {\n bottom: 0;\n background-color: ", ";\n\n left: 0;\n max-height: 100%;\n overflow-y: auto;\n position: fixed;\n right: 0;\n top: 0;\n transition: background-color ", "ms linear;\n z-index: 1030;\n -webkit-overflow-scrolling: touch;\n\n &.ReactModal__Overlay--after-open {\n ", "\n\n &.ReactModal__Overlay--before-close {\n background-color: ", ";\n }\n }\n }\n\n .modal-content {\n background-clip: padding-box;\n background-color: ", ";\n border-radius: 3px;\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n font-family: 'Source Sans Pro', 'Segoe UI', Segoe, Calibri, Tahoma, sans-serif;\n font-size: ", ";\n margin: 0.5rem;\n outline: 0;\n opacity: 0;\n position: absolute;\n left: 0;\n transform: translateY(0);\n transition:\n transform ", "ms ease-out ", "ms,\n opacity ", "ms ease-out ", "ms;\n ", ";\n\n &.ReactModal__Content--after-open {\n opacity: 1;\n ", ";\n\n &.ReactModal__Content--before-close {\n opacity: 0;\n ", ";\n }\n }\n\n &.small {\n @media (min-width: ", ") {\n position: relative;\n margin: ", "px auto;\n width: ", ";\n }\n }\n\n &.medium {\n @media (min-width: ", ") {\n position: relative;\n margin: ", "px auto;\n width: ", ";\n }\n }\n\n &.large {\n @media (min-width: ", ") {\n position: relative;\n margin: ", "px auto;\n width: ", ";\n }\n }\n }\n }\n"]);
2142
2143 _templateObject = function _templateObject() {
2144 return data;
2145 };
2146
2147 return data;
2148}
2149var modalSize = {
2150 small: '300px',
2151 medium: '600px',
2152 large: '900px'
2153};
2154var animationTimeMs = 300;
2155
2156var getModalMargin = function getModalMargin(windowHeight, modalHeight) {
2157 var fullMargin = windowHeight - modalHeight;
2158 var thirdTopMargin = fullMargin / 3;
2159 return Math.max(thirdTopMargin, 50);
2160};
2161
2162var ModalStyles = styled.createGlobalStyle(_templateObject(), function (_ref) {
2163 var theme = _ref.theme;
2164 return theme.portalClassName;
2165}, function (props) {
2166 var color = tinycolor(props.theme.colors.gray9);
2167 color.setAlpha(0);
2168 return color.toRgbString();
2169}, function () {
2170 return animationTimeMs / 2;
2171}, function (props) {
2172 if (!props.showBackdrop) return '';
2173 var color = tinycolor(props.theme.colors.gray9);
2174 color.setAlpha(0.5);
2175 return "background-color: ".concat(color.toRgbString(), ";");
2176}, function (props) {
2177 var color = tinycolor(props.theme.colors.gray9);
2178 color.setAlpha(0);
2179 return color.toRgbString();
2180}, function (props) {
2181 return props.theme.colors.white;
2182}, function (props) {
2183 return props.theme.font.baseFontSize;
2184}, function () {
2185 return animationTimeMs;
2186}, function () {
2187 return animationTimeMs / 4;
2188}, function () {
2189 return animationTimeMs;
2190}, function () {
2191 return animationTimeMs / 4;
2192}, function (props) {
2193 return props.showAnimation ? "\n transform: translateY(-50px);\n " : '';
2194}, function (props) {
2195 return props.showAnimation ? "\n transform: translateY(0);\n " : '';
2196}, function (props) {
2197 return props.showAnimation ? "\n transform: translateY(-50px);\n " : '';
2198}, function (props) {
2199 return props.theme.screenSize.phone;
2200}, function (_ref2) {
2201 var theme = _ref2.theme;
2202 return getModalMargin(theme.windowHeight, theme.modalHeight);
2203}, modalSize.small, function (props) {
2204 return props.theme.screenSize.tablet;
2205}, function (_ref3) {
2206 var theme = _ref3.theme;
2207 return getModalMargin(theme.windowHeight, theme.modalHeight);
2208}, modalSize.medium, function (props) {
2209 return props.theme.screenSize.desktop;
2210}, function (_ref4) {
2211 var theme = _ref4.theme;
2212 return getModalMargin(theme.windowHeight, theme.modalHeight);
2213}, modalSize.large);
2214
2215function Modal(_ref5) {
2216 var _context;
2217
2218 var animation = _ref5.animation,
2219 backdrop = _ref5.backdrop,
2220 children = _ref5.children,
2221 escapeExits = _ref5.escapeExits,
2222 onEnter = _ref5.onEnter,
2223 onExit = _ref5.onExit,
2224 onHide = _ref5.onHide,
2225 show = _ref5.show,
2226 size = _ref5.size,
2227 parentSelector = _ref5.parentSelector,
2228 className = _ref5.className,
2229 overlayRef = _ref5.overlayRef,
2230 contentRef = _ref5.contentRef,
2231 other = _objectWithoutProperties(_ref5, ["animation", "backdrop", "children", "escapeExits", "onEnter", "onExit", "onHide", "show", "size", "parentSelector", "className", "overlayRef", "contentRef"]);
2232
2233 var ariaId = useUniqueId(other.id);
2234 var portalClassName = "ReactModalPortal-".concat(useUniqueId());
2235
2236 var _useRootNodeLocator = useRootNodeLocator(document.body),
2237 _useRootNodeLocator2 = _slicedToArray(_useRootNodeLocator, 2),
2238 rootNode = _useRootNodeLocator2[0],
2239 RootNodeLocator = _useRootNodeLocator2[1];
2240
2241 var _useState = React.useState(300),
2242 _useState2 = _slicedToArray(_useState, 2),
2243 modalHeight = _useState2[0],
2244 setModalHeight = _useState2[1];
2245
2246 var _useState3 = React.useState(show),
2247 _useState4 = _slicedToArray(_useState3, 2),
2248 shouldShow = _useState4[0],
2249 setShouldShow = _useState4[1];
2250
2251 var _useState5 = React.useState(window.innerHeight),
2252 _useState6 = _slicedToArray(_useState5, 2),
2253 windowHeight = _useState6[0],
2254 setWindowHeight = _useState6[1];
2255
2256 var modalRef = React.useRef(null);
2257 var innerContentRef = React.useRef(null);
2258
2259 var callRef = function callRef(ref, element) {
2260 if (ref) {
2261 if (typeof ref === 'function') {
2262 ref(element);
2263 } else {
2264 // eslint-disable-next-line no-param-reassign
2265 ref.current = element;
2266 }
2267 }
2268 };
2269
2270 var setContentRef = React.useCallback(function (contentElement) {
2271 callRef(contentRef, contentElement);
2272 innerContentRef.current = contentElement;
2273 });
2274 var modalHeightRef = React.useCallback(function (modalElement) {
2275 callRef(overlayRef, modalElement);
2276 var newHeight = 0;
2277
2278 if (modalElement) {
2279 modalRef.current = modalElement;
2280 newHeight = modalElement.offsetHeight;
2281 }
2282
2283 if (innerContentRef.current) {
2284 var contRefHeight = innerContentRef.current.offsetHeight;
2285 if (contRefHeight < newHeight) newHeight = contRefHeight;
2286 }
2287
2288 setModalHeight(newHeight);
2289 });
2290 var modalParentSelector = parentSelector || React.useCallback(function () {
2291 return rootNode;
2292 }, [rootNode]);
2293 React.useEffect(function () {
2294 if (!animation || show) {
2295 setShouldShow(show);
2296 return _noop;
2297 }
2298
2299 var mounted = true;
2300
2301 _setTimeout(function () {
2302 if (!mounted) return;
2303 setShouldShow(false);
2304 }, animationTimeMs);
2305
2306 return function () {
2307 mounted = false;
2308 };
2309 }, [show, animation]);
2310 React.useEffect(function () {
2311 var setHeight = _debounce(function () {
2312 return setWindowHeight(window.innerHeight);
2313 }, 100);
2314
2315 window.addEventListener('resize', setHeight);
2316 return function () {
2317 return window.removeEventListener('resize', setHeight);
2318 };
2319 }, []);
2320 React.useEffect(function () {
2321 if (modalRef.current && modalRef.current.scroll) {
2322 modalRef.current.scroll(0, 0);
2323 }
2324 }, [modalRef.current]);
2325 useDisableBodyScroll(show);
2326 var shouldCloseOnOverlayClick = backdrop !== 'static' && backdrop;
2327 return (
2328 /*#__PURE__*/
2329 React__default.createElement(styled.ThemeProvider, {
2330 theme: {
2331 modalHeight: modalHeight,
2332 windowHeight: windowHeight,
2333 portalClassName: portalClassName
2334 }
2335 },
2336 /*#__PURE__*/
2337 React__default.createElement(RootNodeLocator, null), shouldShow ?
2338 /*#__PURE__*/
2339 React__default.createElement(ModalStyles, {
2340 showAnimation: animation,
2341 showBackdrop: backdrop
2342 }) : null,
2343 /*#__PURE__*/
2344 React__default.createElement(ModalContext.Provider, {
2345 value: {
2346 onHide: onHide,
2347 ariaId: ariaId
2348 }
2349 },
2350 /*#__PURE__*/
2351 React__default.createElement(ReactModal, _extends({
2352 portalClassName: portalClassName,
2353 className: _concatInstanceProperty(_context = "".concat(className, " ")).call(_context, size, " modal-content"),
2354 overlayClassName: "background-overlay",
2355 closeTimeoutMS: animation ? animationTimeMs : null,
2356 isOpen: show,
2357 aria: {
2358 labelledby: ariaId
2359 },
2360 shouldCloseOnOverlayClick: shouldCloseOnOverlayClick,
2361 onRequestClose: onHide,
2362 onAfterOpen: onEnter,
2363 onAfterClose: onExit,
2364 shouldCloseOnEsc: escapeExits,
2365 parentSelector: modalParentSelector,
2366 contentRef: setContentRef,
2367 overlayRef: modalHeightRef
2368 }, other), children)))
2369 );
2370}
2371
2372Modal.propTypes = process.env.NODE_ENV !== "production" ? {
2373 /** Open and close the Modal with transitions. */
2374 animation: PropTypes.bool,
2375
2376 /**
2377 * Include a backdrop component. Specify 'static' for a backdrop that doesn't
2378 * trigger an "onHide" when clicked.
2379 */
2380 backdrop: PropTypes.oneOf(['static', true, false]),
2381
2382 /**
2383 * Usually contains a Modal.Header, Modal.Body, and Modal.Footer
2384 * but can contain any content
2385 */
2386 children: PropTypes.any,
2387
2388 /** Set whether the Escape key exits the modal */
2389 escapeExits: PropTypes.bool,
2390
2391 /** Callback fired when the Modal transitions in */
2392 onEnter: PropTypes.func,
2393
2394 /** Callback fired when the modal transitions out */
2395 onExit: PropTypes.func,
2396
2397 /**
2398 * A callback fired when the header closeButton or non-static backdrop is
2399 * clicked. Required if either are specified.
2400 */
2401 onHide: PropTypes.func,
2402
2403 /** When `true` The modal will show itself. */
2404 show: PropTypes.bool,
2405
2406 /** Sets the size of the modal */
2407 size: PropTypes.oneOf(['small', 'medium', 'large']),
2408
2409 /** Selects the parent */
2410 parentSelector: PropTypes.func,
2411 className: PropTypes.string,
2412 overlayRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
2413 current: PropTypes.any
2414 })]),
2415 contentRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
2416 current: PropTypes.any
2417 })])
2418} : {};
2419Modal.defaultProps = {
2420 animation: true,
2421 backdrop: true,
2422 escapeExits: true,
2423 onEnter: _noop,
2424 onExit: _noop,
2425 onHide: _noop,
2426 show: false,
2427 size: 'medium',
2428 children: undefined,
2429 parentSelector: null,
2430 className: null,
2431 overlayRef: null,
2432 contentRef: null
2433};
2434Modal.Header = ModalHeader;
2435Modal.Body = ModalBody;
2436Modal.Footer = ModalFooter;
2437
2438var ModalButtonContainer = styled__default.div(["display:flex;flex-direction:column;justify-content:flex-end;width:100%;@media (min-width:", "){flex-direction:row;}"], function (props) {
2439 return props.theme.screenSize.tablet;
2440});
2441
2442function ownKeys$3(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { keys.push.apply(keys, _Object$getOwnPropertySymbols(object)); } if (enumerableOnly) keys = _filterInstanceProperty(keys).call(keys, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
2443
2444function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; _forEachInstanceProperty(_context = ownKeys$3(source, true)).call(_context, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context2; _forEachInstanceProperty(_context2 = ownKeys$3(source)).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
2445
2446function _templateObject$1() {
2447 var data = _taggedTemplateLiteral(["\n .ReactModal__Overlay--after-open {\n background-color: rgba(0,0,0,0.5) !important;\n }\n\n .ReactModal__Overlay--before-close {\n background-color: rgba(0,0,0,0) !important;\n }\n"]);
2448
2449 _templateObject$1 = function _templateObject() {
2450 return data;
2451 };
2452
2453 return data;
2454}
2455var PaneBase = styled__default(ReactModal)(["background:", ";box-shadow:0 8px 8px ", ";display:flex;flex-direction:column;height:100%;min-width:100px;transition:transform 0.5s;width:100%;will-change:transform;&:focus{outline-style:none;}@media (min-width:", "){width:", ";}"], function (props) {
2456 return props.theme.colors.white;
2457}, function (props) {
2458 return props.theme.colors.boxShadowDark;
2459}, function (props) {
2460 return props.theme.screenSize.tablet;
2461}, function (props) {
2462 return props.theme.screenSize.tablet;
2463});
2464var PaneRight = styled__default(PaneBase)(["margin-left:auto;transform:translateX(100%);&.ReactModal__Content--after-open{transform:translateX(0%);}&.ReactModal__Content--before-close{transform:translateX(100%);}"]);
2465var PaneLeft = styled__default(PaneBase)(["margin-right:auto;transform:translateX(-100%);&.ReactModal__Content--after-open{transform:translateX(0%);}&.ReactModal__Content--before-close{transform:translateX(-100%);}"]);
2466var PaneBottom = styled__default(PaneBase)(["height:90vh;margin-top:10vh;transform:translateY(100%);&.ReactModal__Content--after-open{transform:translateY(0%);}&.ReactModal__Content--before-close{transform:translateY(100%);}"]);
2467var Header$1 = styled__default.div(["align-items:center;background-color:", ";color:", ";display:flex;flex:0 0 64px;height:64px;"], function (props) {
2468 return props.theme.colors.primary;
2469}, function (props) {
2470 return props.theme.colors.white;
2471});
2472var CloseLink = styled__default(LinkButton)(["cursor:pointer;opacity:0.7;padding:16px;"]);
2473var TitleWrapper = styled__default.div(["display:flex;flex:1;flex-direction:column;min-width:0;"]);
2474var TitleText = styled__default(Heading)(["margin:0;max-width:80%;overflow:hidden;padding:1px;text-overflow:ellipsis;white-space:nowrap;"]);
2475var SubTitle = styled__default.div(["font-size:12px;margin-top:2px;"]);
2476var Content = styled__default.div(["flex:1 1 auto;overflow-y:auto;padding:1.5em;position:relative;"]);
2477var ScreenReaderText$1 = screenReaderOnly('span');
2478var defaultStyles = {
2479 overlay: {
2480 backgroundColor: 'rgba(0,0,0,0)',
2481 top: '0',
2482 left: '0',
2483 right: '0',
2484 bottom: '0',
2485 position: 'fixed',
2486 zIndex: '1000',
2487 transition: 'background-color 0.5s'
2488 },
2489 content: {}
2490};
2491var GlobalPaneStyles = styled.createGlobalStyle(_templateObject$1());
2492
2493function getPane(direction) {
2494 switch (direction) {
2495 case 'bottom':
2496 return PaneBottom;
2497
2498 case 'left':
2499 return PaneLeft;
2500
2501 default:
2502 return PaneRight;
2503 }
2504}
2505
2506function SlidingPane(_ref) {
2507 var isOpen = _ref.isOpen,
2508 title = _ref.title,
2509 subTitle = _ref.subTitle,
2510 shouldCloseOnEsc = _ref.shouldCloseOnEsc,
2511 onRequestClose = _ref.onRequestClose,
2512 onAfterOpen = _ref.onAfterOpen,
2513 children = _ref.children,
2514 closeIcon = _ref.closeIcon,
2515 closeIconScreenReaderText = _ref.closeIconScreenReaderText,
2516 from = _ref.from,
2517 headingLevel = _ref.headingLevel,
2518 headingSize = _ref.headingSize,
2519 closeTimeout = _ref.closeTimeout,
2520 overlayStyles = _ref.overlayStyles,
2521 contentStyles = _ref.contentStyles,
2522 appElement = _ref.appElement,
2523 parentSelector = _ref.parentSelector,
2524 rest = _objectWithoutProperties(_ref, ["isOpen", "title", "subTitle", "shouldCloseOnEsc", "onRequestClose", "onAfterOpen", "children", "closeIcon", "closeIconScreenReaderText", "from", "headingLevel", "headingSize", "closeTimeout", "overlayStyles", "contentStyles", "appElement", "parentSelector"]);
2525
2526 var _useRootNodeLocator = useRootNodeLocator(document.body),
2527 _useRootNodeLocator2 = _slicedToArray(_useRootNodeLocator, 2),
2528 rootNode = _useRootNodeLocator2[0],
2529 RootNodeLocator = _useRootNodeLocator2[1];
2530
2531 useDisableBodyScroll(isOpen);
2532 var modalParentSelector = parentSelector || React.useCallback(function () {
2533 return rootNode;
2534 }, [rootNode]);
2535 var Pane = getPane(from);
2536 var styles = {
2537 overlay: _objectSpread$3(_objectSpread$3({}, defaultStyles.overlay), overlayStyles),
2538 content: _objectSpread$3(_objectSpread$3({}, defaultStyles.content), contentStyles)
2539 };
2540
2541 if (appElement) {
2542 Pane.setAppElement(appElement);
2543 } else {
2544 _Object$assign(rest, {
2545 ariaHideApp: false
2546 });
2547 }
2548
2549 return (
2550 /*#__PURE__*/
2551 React__default.createElement(React__default.Fragment, null,
2552 /*#__PURE__*/
2553 React__default.createElement(GlobalPaneStyles, null),
2554 /*#__PURE__*/
2555 React__default.createElement(RootNodeLocator, null),
2556 /*#__PURE__*/
2557 React__default.createElement(Pane, _extends({
2558 style: styles,
2559 closeTimeoutMS: closeTimeout,
2560 isOpen: isOpen,
2561 onAfterOpen: onAfterOpen,
2562 onRequestClose: onRequestClose,
2563 shouldCloseOnEsc: shouldCloseOnEsc,
2564 contentLabel: "Modal \"".concat(title, "\""),
2565 parentSelector: modalParentSelector
2566 }, rest),
2567 /*#__PURE__*/
2568 React__default.createElement(Header$1, null,
2569 /*#__PURE__*/
2570 React__default.createElement(CloseLink, {
2571 onClick: onRequestClose
2572 }, closeIcon ||
2573 /*#__PURE__*/
2574 React__default.createElement(Icon, {
2575 name: "remove",
2576 size: 34
2577 }),
2578 /*#__PURE__*/
2579 React__default.createElement(ScreenReaderText$1, null, closeIconScreenReaderText)),
2580 /*#__PURE__*/
2581 React__default.createElement(TitleWrapper, null,
2582 /*#__PURE__*/
2583 React__default.createElement(TitleText, {
2584 level: headingLevel,
2585 size: headingSize
2586 }, title),
2587 /*#__PURE__*/
2588 React__default.createElement(SubTitle, null, subTitle))),
2589 /*#__PURE__*/
2590 React__default.createElement(Content, null, children)))
2591 );
2592}
2593SlidingPane.propTypes = process.env.NODE_ENV !== "production" ? {
2594 isOpen: PropTypes.bool.isRequired,
2595 title: PropTypes.any,
2596 subTitle: PropTypes.any,
2597 shouldCloseOnEsc: PropTypes.bool,
2598 onRequestClose: PropTypes.func,
2599 onAfterOpen: PropTypes.func,
2600 children: PropTypes.any.isRequired,
2601 from: PropTypes.oneOf(['left', 'right', 'bottom']),
2602 closeIcon: PropTypes.any,
2603 closeIconScreenReaderText: PropTypes.string,
2604 headingLevel: Heading.propTypes.level,
2605 headingSize: Heading.propTypes.size,
2606 closeTimeout: PropTypes.number,
2607 overlayStyles: PropTypes.object,
2608 contentStyles: PropTypes.object,
2609
2610 /** selector of application element (e.g. #root), for hiding of
2611 main content for screenreaders when pane is open */
2612 appElement: PropTypes.string,
2613 parentSelector: PropTypes.func
2614} : {};
2615SlidingPane.defaultProps = {
2616 /* Timeout is in milliseconds */
2617 closeTimeout: 500,
2618 from: 'right',
2619 headingLevel: 2,
2620 headingSize: 3,
2621 shouldCloseOnEsc: true,
2622 title: undefined,
2623 subTitle: undefined,
2624 onRequestClose: _noop,
2625 onAfterOpen: _noop,
2626 closeIcon: undefined,
2627 closeIconScreenReaderText: 'Close',
2628 overlayStyles: {},
2629 contentStyles: {},
2630 appElement: undefined,
2631 parentSelector: null
2632};
2633
2634var StyledButton$3 = styled__default.button(["background-color:", ";border:2px solid ", ";border-radius:", ";box-sizing:border-box;color:", ";cursor:pointer;display:block;font-family:inherit;font-size:", ";font-weight:", ";line-height:", ";min-width:100px;outline:none;padding-bottom:", ";padding-left:", ";padding-right:", ";padding-top:", ";text-align:center;text-decoration:none;text-transform:", ";transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;user-select:none;vertical-align:middle;white-space:nowrap;width:100%;@media (min-width:", "){display:", ";width:", ";}&:focus{box-shadow:0 0 0 0.2rem ", ";}@media (hover:hover),(-ms-high-contrast:none){&:hover{background-color:", ";color:", ";}}&:active,&.pressed{background-color:", ";color:", ";}&.pressed{box-shadow:inset 0 3px 5px rgba(0,0,0,0.25);}&:active:focus,&.pressed:focus{box-shadow:inset 0 3px 5px rgba(0,0,0,0.25),0 0 0 0.2rem ", ";}&[disabled]{background-color:#e6e6e6;border-color:#e6e6e6;color:#ccc;cursor:not-allowed;&:hover{background-color:#e6e6e6;border-color:#e6e6e6;color:#ccc;}> *{pointer-events:none;}}"], function (props) {
2635 return props.colors.bgColor;
2636}, function (props) {
2637 return props.colors.textColor;
2638}, function (props) {
2639 return props.buttonSize.borderRadius;
2640}, function (props) {
2641 return props.colors.textColor;
2642}, function (props) {
2643 return props.buttonSize.fontSize;
2644}, function (props) {
2645 return props.buttonSize.fontWeight || 'normal';
2646}, function (props) {
2647 return props.buttonSize.lineHeight || props.theme.font.baseLineHeight;
2648}, function (props) {
2649 return props.buttonSize.paddingBottom;
2650}, function (props) {
2651 return props.buttonSize.paddingSides;
2652}, function (props) {
2653 return props.buttonSize.paddingSides;
2654}, function (props) {
2655 return props.buttonSize.paddingTop;
2656}, function (props) {
2657 return props.buttonSize.textTransform ? props.buttonSize.textTransform : 'none';
2658}, function (props) {
2659 return props.theme.screenSize.tablet;
2660}, function (props) {
2661 return props.block ? 'block' : 'inline-block';
2662}, function (props) {
2663 return props.block ? '100%' : 'auto';
2664}, function (props) {
2665 return props.colors.focusBoxShadowColor;
2666}, function (props) {
2667 return props.colors.textColor;
2668}, function (props) {
2669 return props.colors.hoverTextColor;
2670}, function (props) {
2671 return props.colors.textColor;
2672}, function (props) {
2673 return props.colors.hoverTextColor;
2674}, function (props) {
2675 return props.colors.focusBoxShadowColor;
2676});
2677var OutlineButton =
2678/*#__PURE__*/
2679React__default.forwardRef(function OutlineButton(props, ref) {
2680 var children = props.children,
2681 styleType = props.styleType,
2682 size = props.size,
2683 block = props.block,
2684 other = _objectWithoutProperties(props, ["children", "styleType", "size", "block"]);
2685
2686 var theme = useTheme();
2687 var buttonSize = theme.buttonStyles.outlineButton.size[size];
2688 var variant = theme.buttonStyles.outlineButton.variant[styleType];
2689 var isInheritedStyle = styleType === 'inherited';
2690 var focusBoxShadowColor = tinycolor.mix(variant.bgColor, theme.colors.black, 14);
2691 focusBoxShadowColor.setAlpha(0.5);
2692 var buttonColors = {
2693 textColor: isInheritedStyle ? 'inherited' : variant.bgColor,
2694 bgColor: isInheritedStyle ? 'inherited' : theme.colors.white,
2695 hoverTextColor: isInheritedStyle ? 'inherited' : theme.colors.white,
2696 focusBoxShadowColor: isInheritedStyle ? theme.colors.gray4 : focusBoxShadowColor.toRgbString()
2697 };
2698 return (
2699 /*#__PURE__*/
2700 React__default.createElement(StyledButton$3, _extends({
2701 ref: ref,
2702 block: block,
2703 buttonSize: buttonSize,
2704 colors: buttonColors,
2705 type: "button"
2706 }, other), children)
2707 );
2708});
2709OutlineButton.propTypes = process.env.NODE_ENV !== "production" ? {
2710 children: PropTypes.node.isRequired,
2711
2712 /** Select the color style of the button, types come from theme buttonStyles.outlineButton */
2713 styleType: PropTypes.string,
2714 size: PropTypes.oneOf(['lg', 'default', 'sm', 'xs']),
2715
2716 /** Make the button's width the size of it's parent container */
2717 block: PropTypes.bool
2718} : {};
2719OutlineButton.defaultProps = {
2720 styleType: 'default',
2721 block: false,
2722 size: 'default'
2723};
2724
2725function ToggleButton(props) {
2726 var theme = useTheme();
2727
2728 var _useState = React.useState(props.isPressed),
2729 _useState2 = _slicedToArray(_useState, 2),
2730 isPressed = _useState2[0],
2731 setIsPressed = _useState2[1];
2732
2733 var prevPressedProp = React.useRef(props.isPressed);
2734
2735 if (prevPressedProp.current !== props.isPressed) {
2736 prevPressedProp.current = props.isPressed;
2737 setIsPressed(props.isPressed);
2738 }
2739
2740 function toggleButton(event) {
2741 setIsPressed(!isPressed);
2742 props.onClick(event);
2743 }
2744
2745 var styleType = props.styleType,
2746 size = props.size,
2747 block = props.block,
2748 isOutline = props.isOutline,
2749 buttonProps = _objectWithoutProperties(props, ["styleType", "size", "block", "isOutline"]);
2750
2751 var ToggleButtonType = isOutline ? OutlineButton : Button;
2752 var styles = isOutline ? theme.buttonStyles.outlineButton : theme.buttonStyles.button;
2753 return (
2754 /*#__PURE__*/
2755 React__default.createElement(ToggleButtonType, _extends({}, buttonProps, {
2756 onClick: toggleButton,
2757 styleType: styleType,
2758 size: size,
2759 block: block,
2760 isOutline: isOutline,
2761 className: isPressed ? "".concat(buttonProps.className || '', " pressed") : buttonProps.className,
2762 variant: styles.variant[styleType],
2763 "aria-pressed": isPressed
2764 }), props.children)
2765 );
2766}
2767
2768ToggleButton.propTypes = process.env.NODE_ENV !== "production" ? {
2769 onClick: PropTypes.func.isRequired,
2770 children: PropTypes.node.isRequired,
2771 styleType: PropTypes.string,
2772 size: PropTypes.oneOf(['lg', 'default', 'sm', 'xs']),
2773 block: PropTypes.bool,
2774 isOutline: PropTypes.bool,
2775 isPressed: PropTypes.bool
2776} : {};
2777ToggleButton.defaultProps = {
2778 styleType: 'default',
2779 size: 'default',
2780 block: false,
2781 isOutline: false,
2782 isPressed: false
2783};
2784
2785var InlineContext =
2786/*#__PURE__*/
2787React__default.createContext(false);
2788
2789var StyledPanel = styled__default.div(["background-color:", ";display:", ";position:absolute;z-index:999;"], function (props) {
2790 return props.theme.colors.gray2;
2791}, function (props) {
2792 return props.isOpen ? 'block' : 'none';
2793});
2794var StyledDismissButton = styled__default(DismissButton)(["margin-left:auto;margin-right:4px;"]);
2795var Header$2 = styled__default.header(["align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;padding-bottom:", ";padding-left:11px;padding-right:5px;padding-top:", ";"], function (props) {
2796 return props.hasHeaderContent ? '10px' : '0';
2797}, function (props) {
2798 return props.hasHeaderContent ? '5px' : '0';
2799});
2800var StyledChildrenContainer = styled__default.div(["display:flex;flex-direction:", ";flex-wrap:wrap;"], function (props) {
2801 return props.inline ? 'row' : 'column';
2802});
2803
2804function MenuPanel(props) {
2805 function onEscape(_ref) {
2806 var keyCode = _ref.keyCode;
2807
2808 if (keyCode === 27) {
2809 props.onClose();
2810 }
2811 }
2812
2813 React.useEffect(function () {
2814 document.addEventListener('keydown', onEscape);
2815 return function removeKeydownListener() {
2816 document.removeEventListener('keydown', onEscape);
2817 };
2818 });
2819
2820 var children = props.children,
2821 headerContent = props.headerContent,
2822 isOpen = props.isOpen,
2823 onClose = props.onClose,
2824 other = _objectWithoutProperties(props, ["children", "headerContent", "isOpen", "onClose"]);
2825
2826 var hasHeaderContent = !!headerContent;
2827 var inline = React.useContext(InlineContext);
2828 return (
2829 /*#__PURE__*/
2830 React__default.createElement(StyledPanel, _extends({
2831 isOpen: isOpen
2832 }, other),
2833 /*#__PURE__*/
2834 React__default.createElement(Header$2, {
2835 hasHeaderContent: hasHeaderContent
2836 }, hasHeaderContent &&
2837 /*#__PURE__*/
2838 React__default.createElement("span", null, headerContent),
2839 /*#__PURE__*/
2840 React__default.createElement(StyledDismissButton, {
2841 onClick: onClose
2842 })),
2843 /*#__PURE__*/
2844 React__default.createElement(StyledChildrenContainer, {
2845 inline: inline
2846 }, children))
2847 );
2848}
2849
2850MenuPanel.propTypes = process.env.NODE_ENV !== "production" ? {
2851 children: PropTypes.any.isRequired,
2852 headerContent: PropTypes.node,
2853 isOpen: PropTypes.bool,
2854 onClose: PropTypes.func.isRequired
2855} : {};
2856MenuPanel.defaultProps = {
2857 headerContent: null,
2858 isOpen: false
2859};
2860
2861var StyledMenuSection = styled__default.section(["padding-top:", ";padding-bottom:", ";border-bottom:", ";"], function (props) {
2862 return !props.isFirst && !props.inline && !props.isOnlySection ? '20px' : '0px';
2863}, function (props) {
2864 return props.isLast ? '0px' : '20px';
2865}, function (props) {
2866 return !props.isLast && !props.inline ? "1px solid ".concat(props.theme.colors.gray5) : 'none';
2867});
2868var StyledHeader = styled__default.header(["padding-left:10px;"]);
2869var StyledChildrenContainer$1 = styled__default.section(["padding:15px 20px 0px 20px;"]);
2870
2871function MenuSection(props) {
2872 var title = props.title,
2873 children = props.children,
2874 isLast = props.isLast,
2875 isFirst = props.isFirst,
2876 isOnlySection = props.isOnlySection,
2877 other = _objectWithoutProperties(props, ["title", "children", "isLast", "isFirst", "isOnlySection"]);
2878
2879 var inline = React.useContext(InlineContext);
2880 return (
2881 /*#__PURE__*/
2882 React__default.createElement(StyledMenuSection, _extends({
2883 isLast: isLast,
2884 isFirst: isFirst,
2885 inline: inline,
2886 isOnlySection: isOnlySection
2887 }, other), title &&
2888 /*#__PURE__*/
2889 React__default.createElement(StyledHeader, {
2890 "aria-label": title
2891 }, title), children &&
2892 /*#__PURE__*/
2893 React__default.createElement(StyledChildrenContainer$1, null, children))
2894 );
2895}
2896
2897MenuSection.propTypes = process.env.NODE_ENV !== "production" ? {
2898 title: PropTypes.string,
2899 children: PropTypes.any,
2900 isLast: PropTypes.bool,
2901 isFirst: PropTypes.bool,
2902 isOnlySection: PropTypes.bool
2903} : {};
2904MenuSection.defaultProps = {
2905 title: undefined,
2906 children: undefined,
2907 isLast: false,
2908 isFirst: false,
2909 isOnlySection: false
2910};
2911
2912var Backdrop = styled__default.div(["background-color:black;bottom:0;cursor:auto;left:0;opacity:0.5;position:fixed;right:0;top:0;z-index:auto;display:", ";"], function (props) {
2913 return props.isMenuOpen ? 'inherit' : 'none';
2914});
2915
2916function Menu(props) {
2917 var _useState = React.useState(false),
2918 _useState2 = _slicedToArray(_useState, 2),
2919 isMenuOpen = _useState2[0],
2920 setIsMenuOpen = _useState2[1];
2921
2922 function toggleMenu() {
2923 setIsMenuOpen(!isMenuOpen);
2924 }
2925
2926 function closeMenu() {
2927 setIsMenuOpen(false);
2928 }
2929
2930 var inline = props.inline,
2931 children = props.children,
2932 buttonContent = props.buttonContent,
2933 openButtonType = props.openButtonType,
2934 rootClose = props.rootClose,
2935 hasBackdrop = props.hasBackdrop,
2936 headerContent = props.headerContent,
2937 other = _objectWithoutProperties(props, ["inline", "children", "buttonContent", "openButtonType", "rootClose", "hasBackdrop", "headerContent"]);
2938
2939 return (
2940 /*#__PURE__*/
2941 React__default.createElement(RootCloseWrapper, {
2942 onRootClose: closeMenu,
2943 disabled: !rootClose
2944 },
2945 /*#__PURE__*/
2946 React__default.createElement("div", other, hasBackdrop &&
2947 /*#__PURE__*/
2948 React__default.createElement(Backdrop, {
2949 isMenuOpen: isMenuOpen,
2950 onClick: closeMenu
2951 }),
2952 /*#__PURE__*/
2953 React__default.createElement(ToggleButton, {
2954 onClick: toggleMenu,
2955 isPressed: isMenuOpen,
2956 styleType: openButtonType,
2957 "aria-expanded": isMenuOpen
2958 }, buttonContent),
2959 /*#__PURE__*/
2960 React__default.createElement(InlineContext.Provider, {
2961 value: inline
2962 },
2963 /*#__PURE__*/
2964 React__default.createElement(MenuPanel, {
2965 headerContent: headerContent,
2966 isOpen: isMenuOpen,
2967 onClose: closeMenu
2968 }, children))))
2969 );
2970}
2971
2972Menu.MenuSection = MenuSection;
2973Menu.propTypes = process.env.NODE_ENV !== "production" ? {
2974 children: PropTypes.any.isRequired,
2975 buttonContent: PropTypes.any.isRequired,
2976 openButtonType: PropTypes.string,
2977 rootClose: PropTypes.bool,
2978 inline: PropTypes.bool,
2979 hasBackdrop: PropTypes.bool,
2980 headerContent: PropTypes.node
2981} : {};
2982Menu.defaultProps = {
2983 rootClose: false,
2984 openButtonType: 'default',
2985 inline: false,
2986 hasBackdrop: false,
2987 headerContent: undefined
2988};
2989
2990var TabButton = styled__default.button(["background-color:", ";border:1px solid ", ";box-shadow:", ";color:", ";display:inline-block;font-size:inherit;line-height:", ";padding:10px;text-align:left;z-index:1;&:focus{outline:none;}@media (min-width:", "){background-color:", ";border:", ";border-bottom-color:", ";box-shadow:none;color:", ";padding:10px 15px;margin:0 2px 0px 0;&:hover,&:focus{background-color:", ";}}"], function (props) {
2991 return props.selected ? props.theme.colors.white : props.theme.colors.gray2;
2992}, function (props) {
2993 return props.theme.colors.gray4;
2994}, function (props) {
2995 return props.selected ? '0 6px 12px rgba(0, 0, 0, 0.175)' : 'none';
2996}, function (props) {
2997 return props.selected ? props.theme.colors.black : props.theme.colors.primary;
2998}, function (props) {
2999 return props.theme.font.baseLineHeight;
3000}, function (props) {
3001 return props.theme.screenSize.desktop;
3002}, function (props) {
3003 return props.theme.colors.white;
3004}, function (props) {
3005 return props.selected ? "1px solid ".concat(props.theme.colors.gray4) : '1px solid transparent';
3006}, function (props) {
3007 return props.selected ? ' transparent' : "".concat(props.theme.colors.gray4);
3008}, function (props) {
3009 return props.selected ? props.theme.colors.black : props.theme.colors.primary;
3010}, function (props) {
3011 return props.selected ? props.theme.colors.white : props.theme.colors.gray2;
3012});
3013var AriaAnnouncer = screenReaderOnly('div');
3014
3015function Tab(_ref) {
3016 var _context;
3017
3018 var name = _ref.name,
3019 selected = _ref.selected,
3020 action = _ref.action,
3021 children = _ref.children,
3022 simpleName = _ref.simpleName,
3023 announcerText = _ref.announcerText,
3024 props = _objectWithoutProperties(_ref, ["name", "selected", "action", "children", "simpleName", "announcerText"]);
3025
3026 return (
3027 /*#__PURE__*/
3028 React__default.createElement(TabButton, _extends({
3029 onClick: function onClick() {
3030 return action(name, children, simpleName, announcerText);
3031 },
3032 selected: selected,
3033 "aria-label": "".concat(simpleName || name, " tab"),
3034 "aria-selected": selected,
3035 role: "tab"
3036 }, props), selected && (simpleName.length > 0 || announcerText.length > 0) &&
3037 /*#__PURE__*/
3038 React__default.createElement(AriaAnnouncer, {
3039 id: "announcer",
3040 "aria-live": "assertive"
3041 }, _concatInstanceProperty(_context = "".concat(simpleName, " ")).call(_context, announcerText)), name)
3042 );
3043}
3044
3045Tab.propTypes = process.env.NODE_ENV !== "production" ? {
3046 /**
3047 * The name of the tab, and the displayed value
3048 */
3049 name: PropTypes.node.isRequired,
3050
3051 /**
3052 * Whether the tab is selected and should be rendered to appear selected.
3053 */
3054 selected: PropTypes.bool,
3055
3056 /**
3057 * The function to call when the tab is clicked
3058 */
3059 action: PropTypes.func,
3060
3061 /**
3062 * Children to be rendered in the TabContent area.
3063 */
3064 children: PropTypes.node,
3065
3066 /**
3067 * A simpler representation for screen readers.
3068 */
3069 simpleName: PropTypes.string,
3070
3071 /*
3072 * Additional text to be read after the simple name
3073 */
3074 announcerText: PropTypes.string
3075} : {};
3076Tab.defaultProps = {
3077 selected: false,
3078 action: _noop,
3079 children: undefined,
3080 simpleName: '',
3081 announcerText: ''
3082};
3083
3084var TabList = styled__default.div(["display:flex;flex-direction:column;font-size:inherit;overflow:hidden;@media (max-width:", "){width:100%;}@media (min-width:", "){flex-direction:row;justify-content:flex-start;}"], function (props) {
3085 return props.theme.screenSize.desktop;
3086}, function (props) {
3087 return props.theme.screenSize.desktop;
3088});
3089var TabContent = styled__default.div(["margin-top:-1px;background-color:", ";border-top:1px solid ", ";"], function (props) {
3090 return props.theme.colors.white;
3091}, function (props) {
3092 return props.theme.colors.gray4;
3093});
3094
3095function TabPanel(props) {
3096 var _context;
3097
3098 var children = props.children,
3099 selectedKey = props.selectedKey,
3100 tabChanged = props.tabChanged,
3101 canTabChange = props.canTabChange;
3102
3103 var _useState = React.useState(selectedKey),
3104 _useState2 = _slicedToArray(_useState, 2),
3105 value = _useState2[0],
3106 setValue = _useState2[1];
3107
3108 var selectedIndex = _findIndex(React__default.Children.toArray(children), function (child) {
3109 var key = selectedKey || value || value.key;
3110 return child.props.name.key ? child.props.name.key === key : child.props.name === key;
3111 });
3112
3113 if (selectedIndex < 0) {
3114 selectedIndex = 0;
3115 }
3116
3117 var elements = _mapInstanceProperty(_context = React__default.Children).call(_context, children, function (child, index) {
3118 return (
3119 /*#__PURE__*/
3120 React__default.cloneElement(child, {
3121 selected: index === selectedIndex,
3122 action: function () {
3123 var _action = _asyncToGenerator(
3124 /*#__PURE__*/
3125 _regeneratorRuntime.mark(function _callee(header) {
3126 var canChange;
3127 return _regeneratorRuntime.wrap(function _callee$(_context2) {
3128 while (1) {
3129 switch (_context2.prev = _context2.next) {
3130 case 0:
3131 _context2.next = 2;
3132 return canTabChange(header);
3133
3134 case 2:
3135 canChange = _context2.sent;
3136
3137 if (canChange) {
3138 setValue(header);
3139 tabChanged(header);
3140 }
3141
3142 case 4:
3143 case "end":
3144 return _context2.stop();
3145 }
3146 }
3147 }, _callee);
3148 }));
3149
3150 function action(_x) {
3151 return _action.apply(this, arguments);
3152 }
3153
3154 return action;
3155 }()
3156 })
3157 );
3158 });
3159
3160 return (
3161 /*#__PURE__*/
3162 React__default.createElement(React__default.Fragment, null,
3163 /*#__PURE__*/
3164 React__default.createElement(TabList, {
3165 role: "tablist"
3166 }, elements),
3167 /*#__PURE__*/
3168 React__default.createElement(TabContent, {
3169 role: "tabpanel"
3170 }, elements[selectedIndex].props.children))
3171 );
3172}
3173
3174function childrenRule(props, propName, component) {
3175 var children = props[propName];
3176
3177 if (!_Array$isArray(children)) {
3178 children = [children];
3179 }
3180
3181 if (!_everyInstanceProperty(children).call(children, function (child) {
3182 return child.type.name === 'Tab' || child.type.target === Tab;
3183 })) {
3184 return new Error('Tab Panel only accepts Tabs as direct descendants.');
3185 }
3186
3187 return null;
3188}
3189
3190TabPanel.propTypes = process.env.NODE_ENV !== "production" ? {
3191 /**
3192 * Makes sure immediate children are Tabs, as we cannot render anything else in the tab heading.
3193 */
3194 children: childrenRule,
3195 selectedKey: PropTypes.any,
3196
3197 /**
3198 * Callback run before the selected tab has changed. The callback is given the name of the tab that is active and returns whether the tab change event should fire.
3199 */
3200 canTabChange: PropTypes.func,
3201
3202 /**
3203 * Callback when the selected tab has changed. The callback is given the name of the tab that is active
3204 */
3205 tabChanged: PropTypes.func
3206} : {};
3207TabPanel.defaultProps = {
3208 children: undefined,
3209 selectedKey: '',
3210 tabChanged: _noop,
3211 canTabChange: function canTabChange() {
3212 return true;
3213 }
3214};
3215TabPanel.Tab = Tab;
3216
3217var StripedContainerWrapper = styled__default.div(["> *{display:block;padding:20px;&:nth-child(even){background-color:", ";}&:nth-child(odd){background-color:", ";}}"], function (props) {
3218 return props.evenColor;
3219}, function (props) {
3220 return props.oddColor;
3221});
3222
3223function StripedContainer(props) {
3224 var _context;
3225
3226 var theme = useTheme();
3227 return (
3228 /*#__PURE__*/
3229 React__default.createElement(StripedContainerWrapper, {
3230 oddColor: theme.colors.gray2,
3231 evenColor: theme.colors.gray4
3232 }, _mapInstanceProperty(_context = React__default.Children).call(_context, props.children, function (child) {
3233 return (
3234 /*#__PURE__*/
3235 React__default.cloneElement(child)
3236 );
3237 }))
3238 );
3239}
3240
3241StripedContainer.propTypes = process.env.NODE_ENV !== "production" ? {
3242 children: PropTypes.node
3243} : {};
3244StripedContainer.defaultProps = {
3245 children: undefined
3246};
3247
3248var Label = styled__default.label(["color:", ";cursor:pointer;font-family:'Source Sans Pro','Segoe UI',Segoe,Calibri,Tahoma,sans-serif;font-size:", ";font-weight:bold;line-height:", ";margin-bottom:5px;display:inline-block;&[disabled]{cursor:not-allowed;}@media (min-width:", "){margin-right:20px;}"], function (props) {
3249 return props.theme.colors.gray9;
3250}, function (props) {
3251 return props.theme.font.baseFontSize;
3252}, function (props) {
3253 return props.theme.font.baseLineHeight;
3254}, function (props) {
3255 return props.theme.screenSize.tablet;
3256});
3257
3258var PromptType = {
3259 readAloud: 'readAloud',
3260 doNotReadAloud: 'doNotReadAloud'
3261};
3262
3263var IconWrapper = styled__default.div(["background-color:", ";padding:6px 0 0 6px;"], function (promptProps) {
3264 return promptProps.bannerBgColor;
3265});
3266var StyledIcon$1 = styled__default(Icon)(["name:", ";color:", ";padding-right:5px;"], function (promptProps) {
3267 return promptProps.iconName;
3268}, function (promptProps) {
3269 return promptProps.iconColor;
3270});
3271var ContentWrapper$1 = styled__default.div(["align-items:center;background-color:", ";color:black;border-radius:2px;display:block;margin-bottom:25px;padding:15px;"], function (promptProps) {
3272 return promptProps.bgColor;
3273});
3274var Content$1 = styled__default.div(["font-size:18px;align-self:center;word-break:break-word;"]);
3275var BannerLabel = styled__default(Label)(["letter-spacing:0.5px;font-size:20px;font-weight:500;color:", ";"], function (promptProps) {
3276 return promptProps.bannerTextColor;
3277});
3278
3279var Prompt = function Prompt(props) {
3280 var isContentReadAloud = props.isContentReadAloud,
3281 children = props.children;
3282 var theme = useTheme();
3283 var promptStyles = isContentReadAloud ? theme.promptStyles[PromptType.readAloud] : theme.promptStyles[PromptType.doNotReadAloud];
3284 var inlineIconText = isContentReadAloud ?
3285 /*#__PURE__*/
3286 React__default.createElement(BannerLabel, {
3287 bannerTextColor: promptStyles.bannerTextColor
3288 }, "Read Aloud") :
3289 /*#__PURE__*/
3290 React__default.createElement(BannerLabel, {
3291 bannerTextColor: promptStyles.bannerTextColor
3292 }, "Do Not Read Aloud");
3293 return (
3294 /*#__PURE__*/
3295 React__default.createElement(React__default.Fragment, null,
3296 /*#__PURE__*/
3297 React__default.createElement(IconWrapper, {
3298 bannerBgColor: promptStyles.bannerBgColor,
3299 textColor: promptStyles.textColor
3300 },
3301 /*#__PURE__*/
3302 React__default.createElement(StyledIcon$1, {
3303 name: promptStyles.iconName,
3304 iconColor: promptStyles.iconColor,
3305 size: 30
3306 }), inlineIconText),
3307 /*#__PURE__*/
3308 React__default.createElement(ContentWrapper$1, {
3309 bgColor: promptStyles.bgColor
3310 },
3311 /*#__PURE__*/
3312 React__default.createElement(Content$1, null, children)))
3313 );
3314};
3315
3316Prompt.defaultProps = {
3317 isContentReadAloud: true,
3318 children: null
3319};
3320Prompt.propTypes = process.env.NODE_ENV !== "production" ? {
3321 isContentReadAloud: PropTypes.bool,
3322 children: PropTypes.node
3323} : {};
3324
3325var TableBase = styled__default.table(["border-collapse:collapse;border:0;border-spacing:0;margin:0 0 25px 0;padding:0;width:100%;caption{padding-top:8px;padding-bottom:8px;color:", ";font-size:1.3em;margin:0.5em 0;text-align:left;}thead th{border-bottom:2px solid ", ";}tbody tr:not(:first-child){th,td{border-top:1px solid ", ";}}th{font-family:'Source Sans Pro','Segoe UI',Segoe,Calibri,Tahoma,sans-serif;font-weight:bold;line-height:", ";padding:", ";text-align:left;vertical-align:bottom;}td{line-height:", ";padding:", ";vertical-align:top;}&& tbody{", ";th{vertical-align:top;}}&& tbody{", ";}"], function (props) {
3326 return props.theme.colors.gray8;
3327}, function (props) {
3328 return props.theme.colors.gray4;
3329}, function (props) {
3330 return props.theme.colors.gray4;
3331}, function (props) {
3332 return props.theme.font.baseLineHeight;
3333}, function (props) {
3334 return props.cellPadding;
3335}, function (props) {
3336 return props.theme.font.baseLineHeight;
3337}, function (props) {
3338 return props.cellPadding;
3339}, function (props) {
3340 return props.hasStripes && styled.css(["tr:nth-of-type(odd){background-color:", ";}"], props.theme.colors.gray0);
3341}, function (props) {
3342 return props.hasHover && styled.css(["tr:hover{background-color:", ";}"], props.theme.colors.gray1);
3343});
3344
3345function Table(props) {
3346 var isCondensed = props.isCondensed,
3347 isRoomy = props.isRoomy,
3348 rest = _objectWithoutProperties(props, ["isCondensed", "isRoomy"]);
3349
3350 var cellPadding = '8px';
3351 cellPadding = isCondensed ? '5px' : cellPadding;
3352 cellPadding = isRoomy ? '12px' : cellPadding;
3353 return (
3354 /*#__PURE__*/
3355 React__default.createElement(TableBase, _extends({
3356 cellPadding: cellPadding
3357 }, rest))
3358 );
3359} // kept to preserve backward-compatibility for now
3360
3361
3362var TableRow = styled__default.tr([""]);
3363var TableBodyCell = styled__default.td([""]);
3364var TableHeaderCell = styled__default.th([""]);
3365Table.Row = TableRow;
3366Table.Cell = TableBodyCell;
3367Table.HeaderCell = TableHeaderCell;
3368Table.propTypes = process.env.NODE_ENV !== "production" ? {
3369 /** adds a darker background to every other row */
3370 hasStripes: PropTypes.bool,
3371
3372 /** adds a hover effect to rows */
3373 hasHover: PropTypes.bool,
3374
3375 /** reduce cell padding for a smaller footprint */
3376 isCondensed: PropTypes.bool,
3377
3378 /** increase cell padding for more white space */
3379 isRoomy: PropTypes.bool
3380} : {};
3381Table.defaultProps = {
3382 hasStripes: false,
3383 hasHover: false,
3384 isCondensed: false,
3385 isRoomy: false
3386};
3387
3388var TableBase$1 = styled__default(Table)(["tbody{th{font-family:'Source Sans Pro','Segoe UI',Segoe,Calibri,Tahoma,sans-serif;font-weight:normal;}}&&&{@media (max-width:", "){background-color:", ";thead{border:none;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}tr{background-color:", ";box-shadow:1px 1px 3px 1px rgba(0,0,0,0.2);display:block;margin:0.625em;padding:0.35em;}td,tbody th{border-top:1px solid ", ";display:flex;justify-content:space-between;padding:0.625em;text-align:right;&:before{content:attr(data-label);font-family:'Source Sans Pro','Segoe UI',Segoe,Calibri,Tahoma,sans-serif;font-weight:bold;margin-right:2em;max-width:25%;text-align:left;}&:first-child{border-top:0;}&:last-child{border-bottom:0;}}}}"], function (props) {
3389 return props.theme.screenSize.phone;
3390}, function (props) {
3391 return props.theme.colors.gray2;
3392}, function (props) {
3393 return props.theme.colors.white;
3394}, function (props) {
3395 return props.theme.colors.gray4;
3396});
3397
3398function ResponsiveTable(props) {
3399 return (
3400 /*#__PURE__*/
3401 React__default.createElement(TableBase$1, props)
3402 );
3403}
3404
3405function _createSuper2(Derived) {
3406 function isNativeReflectConstruct() {
3407 if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
3408 if (_Reflect$construct.sham) return false;
3409 if (typeof Proxy === "function") return true;
3410
3411 try {
3412 Date.prototype.toString.call(_Reflect$construct(Date, [], function () {}));
3413 return true;
3414 } catch (e) {
3415 return false;
3416 }
3417 }
3418
3419 return function () {
3420 var Super = _getPrototypeOf(Derived),
3421 result;
3422
3423 if (isNativeReflectConstruct()) {
3424 var NewTarget = _getPrototypeOf(this).constructor;
3425
3426 result = _Reflect$construct(Super, arguments, NewTarget);
3427 } else {
3428 result = Super.apply(this, arguments);
3429 }
3430
3431 return _possibleConstructorReturn(this, result);
3432 };
3433}
3434
3435function getWindowSize() {
3436 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
3437 defaultWidth = _ref.defaultWidth,
3438 defaultHeight = _ref.defaultHeight;
3439
3440 return {
3441 windowWidth: defaultWidth || document.body.clientWidth,
3442 windowHeight: defaultHeight || document.body.clientHeight
3443 };
3444}
3445
3446function withWindowSize(ComponentClass) {
3447 var windowSize =
3448 /*#__PURE__*/
3449 function (_React$Component) {
3450 _inherits(windowSize, _React$Component);
3451
3452 var _super = _createSuper2(windowSize);
3453
3454 function windowSize() {
3455 var _context;
3456
3457 var _this;
3458
3459 _classCallCheck(this, windowSize);
3460
3461 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
3462 args[_key] = arguments[_key];
3463 }
3464
3465 _this = _super.call.apply(_super, _concatInstanceProperty(_context = [this]).call(_context, args));
3466
3467 _defineProperty(_assertThisInitialized(_this), "state", getWindowSize(_this.props));
3468
3469 _defineProperty(_assertThisInitialized(_this), "handleResize", function () {
3470 var activeTag = document.activeElement.tagName.toLocaleLowerCase();
3471
3472 if (activeTag === 'input' || activeTag === 'select') {
3473 return;
3474 }
3475
3476 _this.setState(getWindowSize());
3477 });
3478
3479 return _this;
3480 }
3481
3482 _createClass(windowSize, [{
3483 key: "componentDidMount",
3484 value: function componentDidMount() {
3485 window.addEventListener('resize', this.handleResize);
3486 }
3487 }, {
3488 key: "componentWillUnmount",
3489 value: function componentWillUnmount() {
3490 window.removeEventListener('resize', this.handleResize);
3491 }
3492 }, {
3493 key: "render",
3494 value: function render() {
3495 return (
3496 /*#__PURE__*/
3497 React__default.createElement(ComponentClass, _extends({}, this.props, {
3498 windowWidth: this.state.windowWidth,
3499 windowHeight: this.state.windowHeight
3500 }))
3501 );
3502 }
3503 }]);
3504
3505 return windowSize;
3506 }(React__default.Component);
3507
3508 _defineProperty(windowSize, "defaultProps", {
3509 defaultWidth: null,
3510 defaultHeight: null
3511 });
3512
3513 windowSize.propTypes = process.env.NODE_ENV !== "production" ? {
3514 defaultWidth: PropTypes.number,
3515 defaultHeight: PropTypes.number
3516 } : {};
3517 return windowSize;
3518}
3519
3520var OuterWrapper = styled__default.div(["overflow:hidden;position:relative;"]);
3521var InnerWrapper = styled__default.div(["alignitems:center;display:flex;height:100%;position:relative;white-space:nowrap;z-index:0;"]);
3522var ScrollIcon = styled__default.div(["align-items:center;cursor:pointer;display:flex;height:100%;outline:0;position:absolute;top:0;z-index:1;"]);
3523
3524var _StyledScrollIcon2 = styled__default(ScrollIcon)(["right:0;text-align:right;"]);
3525
3526var _StyledScrollIcon = styled__default(ScrollIcon)(["left:0;text-align:left;"]);
3527
3528var ArrowContainer = styled__default.div(["align-items:center;background-color:", ";border-radius:50%;box-shadow:0 1px 1px ", ";color:", ";display:flex;padding:0.5em;"], function (props) {
3529 return props.theme.colors.white;
3530}, function (props) {
3531 return props.theme.colors.boxShadowDark;
3532}, function (props) {
3533 return props.theme.colors.gray9;
3534});
3535
3536var generateOnArrowKeyDownHandler = function generateOnArrowKeyDownHandler(onKeyDown) {
3537 return function (event) {
3538 var code = event.code.toLowerCase();
3539
3540 if (code === 'enter' || code === 'space') {
3541 onKeyDown();
3542 }
3543 };
3544};
3545
3546var ArrowLeft = function ArrowLeft(_ref) {
3547 var onClick = _ref.onClick;
3548 return (
3549 /*#__PURE__*/
3550 React__default.createElement(_StyledScrollIcon, {
3551 role: "button",
3552 tabIndex: 0,
3553 onClick: onClick,
3554 onKeyDown: generateOnArrowKeyDownHandler(onClick)
3555 },
3556 /*#__PURE__*/
3557 React__default.createElement(ArrowContainer, null,
3558 /*#__PURE__*/
3559 React__default.createElement(Icon, {
3560 name: "chevron-left"
3561 })))
3562 );
3563};
3564
3565ArrowLeft.propTypes = process.env.NODE_ENV !== "production" ? {
3566 onClick: PropTypes.func.isRequired
3567} : {};
3568
3569var ArrowRight = function ArrowRight(_ref2) {
3570 var onClick = _ref2.onClick;
3571 return (
3572 /*#__PURE__*/
3573 React__default.createElement(_StyledScrollIcon2, {
3574 role: "button",
3575 tabIndex: 0,
3576 onClick: onClick,
3577 onKeyDown: generateOnArrowKeyDownHandler(onClick)
3578 },
3579 /*#__PURE__*/
3580 React__default.createElement(ArrowContainer, null,
3581 /*#__PURE__*/
3582 React__default.createElement(Icon, {
3583 name: "chevron-right"
3584 })))
3585 );
3586};
3587
3588ArrowRight.propTypes = process.env.NODE_ENV !== "production" ? {
3589 onClick: PropTypes.func.isRequired
3590} : {};
3591
3592function HorizontalScrollWrapper(_ref3) {
3593 var windowWidth = _ref3.windowWidth,
3594 children = _ref3.children,
3595 slideAmount = _ref3.slideAmount,
3596 otherProps = _objectWithoutProperties(_ref3, ["windowWidth", "children", "slideAmount"]);
3597
3598 var rootRef = React.useRef(null);
3599 var menuRef = React.useRef(null);
3600
3601 var _useState = React.useState(0),
3602 _useState2 = _slicedToArray(_useState, 2),
3603 rootWidth = _useState2[0],
3604 setRootWidth = _useState2[1];
3605
3606 var _useState3 = React.useState(0),
3607 _useState4 = _slicedToArray(_useState3, 2),
3608 menuWidth = _useState4[0],
3609 setMenuWidth = _useState4[1];
3610
3611 var _useState5 = React.useState(0),
3612 _useState6 = _slicedToArray(_useState5, 2),
3613 xPosition = _useState6[0],
3614 setXPosition = _useState6[1];
3615
3616 var _useState7 = React.useState(0),
3617 _useState8 = _slicedToArray(_useState7, 2),
3618 cursorXPosition = _useState8[0],
3619 setCursorXPosition = _useState8[1];
3620
3621 var _useState9 = React.useState(false),
3622 _useState10 = _slicedToArray(_useState9, 2),
3623 hasOverflow = _useState10[0],
3624 setHasOverflow = _useState10[1];
3625
3626 var _useState11 = React.useState(false),
3627 _useState12 = _slicedToArray(_useState11, 2),
3628 isDragging = _useState12[0],
3629 setIsDragging = _useState12[1];
3630
3631 React.useEffect(function () {
3632 var currentRootWidth = rootRef.current ? rootRef.current.clientWidth : 0;
3633 var currentMenuWidth = menuRef.current ? menuRef.current.scrollWidth : 0;
3634
3635 if (currentRootWidth <= currentMenuWidth) {
3636 setRootWidth(currentRootWidth);
3637 setMenuWidth(currentMenuWidth);
3638 setHasOverflow(true);
3639 var absoluteXPosition = Math.abs(xPosition);
3640
3641 if (currentRootWidth + absoluteXPosition > currentMenuWidth) {
3642 var distance = Math.abs(currentMenuWidth - currentRootWidth + xPosition);
3643 setXPosition(xPosition + distance);
3644 }
3645 } else if (hasOverflow) {
3646 setHasOverflow(false);
3647 }
3648 }, [windowWidth, rootRef.current, menuRef.current]);
3649
3650 var handleDownEvent = function handleDownEvent(downEvent) {
3651 if (!hasOverflow) return;
3652 var cursorX = 0;
3653
3654 if (downEvent.type === 'mousedown') {
3655 cursorX = downEvent.pageX - xPosition;
3656 } else if (downEvent.type === 'touchstart') {
3657 var touchEvent = downEvent.changedTouches[0];
3658 cursorX = touchEvent.pageX - xPosition;
3659 }
3660
3661 setCursorXPosition(cursorX);
3662 setIsDragging(true);
3663 };
3664
3665 var handleMoveEvent = function handleMoveEvent(moveEvent) {
3666 if (!hasOverflow || !isDragging) return;
3667 var distance = 0;
3668
3669 if (moveEvent.type === 'mousemove') {
3670 moveEvent.preventDefault();
3671 distance = moveEvent.pageX - cursorXPosition;
3672 } else if (moveEvent.type === 'touchmove') {
3673 var touchEvent = moveEvent.changedTouches[0];
3674 distance = touchEvent.pageX - cursorXPosition;
3675 }
3676
3677 var newXPosition = (xPosition + distance) * 0.5;
3678
3679 if (newXPosition > 0) {
3680 newXPosition = 0;
3681 }
3682
3683 if (-newXPosition > menuWidth - rootWidth) {
3684 newXPosition = -(menuWidth - rootWidth);
3685 }
3686
3687 setXPosition(newXPosition);
3688 };
3689
3690 var handleUpEvent = function handleUpEvent() {
3691 if (!hasOverflow || !isDragging) return;
3692 setIsDragging(false);
3693 };
3694
3695 var handleLeftClick = function handleLeftClick(event) {
3696 event.stopPropagation();
3697 event.preventDefault();
3698 var newXPosition = xPosition + slideAmount;
3699
3700 if (newXPosition > 0) {
3701 newXPosition = 0;
3702 }
3703
3704 setXPosition(newXPosition);
3705 };
3706
3707 var handleRightClick = function handleRightClick(event) {
3708 event.stopPropagation();
3709 event.preventDefault();
3710 var newXPosition = xPosition - slideAmount;
3711
3712 if (-newXPosition > menuWidth - rootWidth) {
3713 newXPosition = -(menuWidth - rootWidth);
3714 }
3715
3716 setXPosition(newXPosition);
3717 };
3718
3719 var handleKeyEvent = function handleKeyEvent(event) {
3720 var code = event.key.toLowerCase();
3721 if (code !== 'tab') return;
3722 var element = document.activeElement.parentElement;
3723 var style = window.getComputedStyle ? getComputedStyle(element, null) : element.currentStyle;
3724 var marginLeft = _parseInt(style.marginLeft, 10) || 0;
3725 var marginRight = _parseInt(style.marginRight, 10) || 0;
3726 var tabSlide = element.offsetWidth + marginLeft + marginRight;
3727
3728 if (event.shiftKey) {
3729 var newXPosition = xPosition + tabSlide;
3730
3731 if (newXPosition > 0) {
3732 newXPosition = 0;
3733 }
3734
3735 setXPosition(newXPosition);
3736 } else {
3737 var _newXPosition = xPosition - tabSlide;
3738
3739 if (-_newXPosition > menuWidth - rootWidth) {
3740 _newXPosition = -(menuWidth - rootWidth);
3741 }
3742
3743 setXPosition(_newXPosition);
3744 }
3745 };
3746
3747 return (
3748 /*#__PURE__*/
3749 React__default.createElement(OuterWrapper, _extends({
3750 ref: rootRef
3751 }, otherProps),
3752 /*#__PURE__*/
3753 React__default.createElement(InnerWrapper, {
3754 ref: menuRef,
3755 role: "presentation",
3756 onMouseDown: handleDownEvent,
3757 onMouseMove: handleMoveEvent,
3758 onMouseUp: handleUpEvent,
3759 onMouseLeave: handleUpEvent,
3760 onTouchStart: handleDownEvent,
3761 onTouchMove: handleMoveEvent,
3762 onTouchEnd: handleUpEvent,
3763 onKeyUp: handleKeyEvent,
3764 style: {
3765 transform: "translate3d(".concat(xPosition, "px, 0, 0)"),
3766 transition: "".concat(isDragging ? '' : 'transform 0.3s ease-in-out')
3767 }
3768 }, children), hasOverflow && xPosition < 0 &&
3769 /*#__PURE__*/
3770 React__default.createElement(ArrowLeft, {
3771 onClick: handleLeftClick
3772 }), hasOverflow && -xPosition < menuWidth - rootWidth &&
3773 /*#__PURE__*/
3774 React__default.createElement(ArrowRight, {
3775 onClick: handleRightClick
3776 }))
3777 );
3778}
3779
3780HorizontalScrollWrapper.propTypes = process.env.NODE_ENV !== "production" ? {
3781 /** @ignore */
3782 windowWidth: PropTypes.number,
3783 children: PropTypes.node,
3784
3785 /** Set the number of pixels the contents will move when clicking left/right arrows */
3786 slideAmount: PropTypes.number
3787} : {};
3788HorizontalScrollWrapper.defaultProps = {
3789 windowWidth: undefined,
3790 children: null,
3791 slideAmount: 300
3792};
3793var HorizontalScrollWrapper$1 = withWindowSize(HorizontalScrollWrapper);
3794
3795var SkeletonContainer = styled__default.div(["position:relative;background-color:", ";&::after{animation:loading-keyframes 2s linear infinite;background-size:50%;background-repeat:no-repeat;background-image:linear-gradient( -60deg,", " 0,", " 40%,", " 50%,", " 60%,", " 100% );content:'';display:block;height:100%;left:0;position:absolute;top:0;width:100%;}@keyframes loading-keyframes{0%{background-position:-150% 0;}75%{background-position:250% 0;}100%{background-position:250% 0;}}"], function (_ref) {
3796 var skeleton = _ref.theme.skeleton;
3797 return skeleton.shimmerColor;
3798}, function (_ref2) {
3799 var skeleton = _ref2.theme.skeleton;
3800 return tinycolor(skeleton.shimmerColor).setAlpha(0).toRgbString();
3801}, function (_ref3) {
3802 var skeleton = _ref3.theme.skeleton;
3803 return tinycolor(skeleton.shimmerColor).setAlpha(0).toRgbString();
3804}, function (_ref4) {
3805 var skeleton = _ref4.theme.skeleton;
3806 return tinycolor(skeleton.shimmerColor).setAlpha(0.8).toRgbString();
3807}, function (_ref5) {
3808 var skeleton = _ref5.theme.skeleton;
3809 return tinycolor(skeleton.shimmerColor).setAlpha(0).toRgbString();
3810}, function (_ref6) {
3811 var skeleton = _ref6.theme.skeleton;
3812 return tinycolor(skeleton.shimmerColor).setAlpha(0).toRgbString();
3813});
3814var SkeletonShape = styled__default.div(["background-color:", ";"], function (_ref7) {
3815 var skeleton = _ref7.theme.skeleton;
3816 return skeleton.shapeColor;
3817});
3818
3819var LoadingSkeleton = function LoadingSkeleton(_ref8) {
3820 var shapeColor = _ref8.shapeColor,
3821 shimmerColor = _ref8.shimmerColor,
3822 props = _objectWithoutProperties(_ref8, ["shapeColor", "shimmerColor"]);
3823
3824 var theme = useTheme();
3825 var colors = theme.colors;
3826 var shimmer = shimmerColor || colors.white;
3827 var shape = shapeColor || colors.gray3;
3828 var skeleton = {
3829 shimmerColor: shimmer,
3830 shapeColor: shape
3831 };
3832 return (
3833 /*#__PURE__*/
3834 React__default.createElement(styled.ThemeProvider, {
3835 theme: {
3836 skeleton: skeleton
3837 }
3838 },
3839 /*#__PURE__*/
3840 React__default.createElement(SkeletonContainer, props))
3841 );
3842};
3843
3844LoadingSkeleton.propTypes = process.env.NODE_ENV !== "production" ? {
3845 shapeColor: PropTypes.string,
3846 shimmerColor: PropTypes.string
3847} : {};
3848LoadingSkeleton.defaultProps = {
3849 shapeColor: null,
3850 shimmerColor: null
3851};
3852LoadingSkeleton.Shape = SkeletonShape;
3853
3854var ValidationContext = /*#__PURE__*/
3855React__default.createContext('default');
3856
3857var FlexControl = styled__default.div(["color:", ";display:flex;flex-wrap:wrap;flex-direction:column;margin-bottom:25px;>[role=\"group\"]{margin-bottom:0;}select{border-color:", ";box-shadow:", ";}input:focus,select:focus{border-color:", ";box-shadow:", ";}", "}", ";"], function (props) {
3858 return props.textColor;
3859}, function (props) {
3860 return props.borderColor;
3861}, function (props) {
3862 return props.boxShadow;
3863}, function (props) {
3864 return props.focusBorderColor;
3865}, function (props) {
3866 return props.focusBoxShadow;
3867}, function (props) {
3868 return props.hasValidationBorder && props.validationState !== 'default' && styled.css(["border-bottom:2px solid ", ";box-shadow:inset 0 7px 6px -6px ", ";padding:15px ", ";margin-left:-", ";margin-right:-", ";"], props.theme.colors.gray4, props.textColor, props.borderOffset, props.borderOffset, props.borderOffset);
3869}, function (props) {
3870 return props.layoutOrientation === 'inline' && styled.css(["@media (min-width:", "){align-items:baseline;flex-direction:row;}"], props.theme.screenSize.tablet);
3871});
3872
3873function Control(props) {
3874 var validationState = props.validationState,
3875 hasValidationBorder = props.hasValidationBorder,
3876 orientation = props.orientation,
3877 borderOffset = props.borderOffset,
3878 children = props.children,
3879 other = _objectWithoutProperties(props, ["validationState", "hasValidationBorder", "orientation", "borderOffset", "children"]);
3880
3881 var theme = useTheme();
3882 var textColor = theme.validationTextColor[validationState];
3883 return (
3884 /*#__PURE__*/
3885 React__default.createElement(OrientationContext.Provider, {
3886 value: orientation
3887 },
3888 /*#__PURE__*/
3889 React__default.createElement(FlexControl, _extends({
3890 textColor: textColor,
3891 borderOffset: borderOffset,
3892 validationState: validationState
3893 }, theme.validationInputColor[validationState], {
3894 layoutOrientation: orientation,
3895 hasValidationBorder: hasValidationBorder
3896 }, other),
3897 /*#__PURE__*/
3898 React__default.createElement(ValidationContext.Provider, {
3899 value: validationState
3900 }, children)))
3901 );
3902}
3903
3904Control.propTypes = process.env.NODE_ENV !== "production" ? {
3905 orientation: PropTypes.oneOf(['stacked', 'inline']),
3906 validationState: PropTypes.oneOf(['default', 'success', 'warning', 'danger']),
3907
3908 /** Apply a top/bottom validation border to a control (usually checkbox/radios) */
3909 hasValidationBorder: PropTypes.bool,
3910
3911 /** Set the border offset to match container padding */
3912 borderOffset: PropTypes.string,
3913 children: PropTypes.node
3914} : {};
3915Control.defaultProps = {
3916 orientation: 'stacked',
3917 validationState: 'default',
3918 hasValidationBorder: false,
3919 borderOffset: '15px',
3920 children: null
3921};
3922
3923var ValidationIcon = styled__default(Icon)(["align-self:flex-start;font-size:35px;margin-right:5px;"]);
3924var HelpText = styled__default.div(["align-items:center;color:inherit;display:inline-flex;margin-top:5px;margin-bottom:10px;width:100%;"]);
3925
3926function AdditionalHelp(_ref) {
3927 var children = _ref.children,
3928 hasValidationIcon = _ref.hasValidationIcon,
3929 props = _objectWithoutProperties(_ref, ["children", "hasValidationIcon"]);
3930
3931 var theme = useTheme();
3932 var validationState = React__default.useContext(ValidationContext);
3933 return (
3934 /*#__PURE__*/
3935 React__default.createElement(HelpText, props, hasValidationIcon && children && validationState !== 'default' &&
3936 /*#__PURE__*/
3937 React__default.createElement(ValidationIcon, {
3938 "aria-hidden": "true",
3939 name: theme.validationIconName[validationState]
3940 }), children)
3941 );
3942}
3943
3944AdditionalHelp.propTypes = process.env.NODE_ENV !== "production" ? {
3945 children: PropTypes.any,
3946
3947 /** use to show or hide an associated validation icon */
3948 hasValidationIcon: PropTypes.bool
3949} : {};
3950AdditionalHelp.defaultProps = {
3951 children: undefined,
3952 hasValidationIcon: true
3953};
3954
3955var InputBase = styled__default.input(["border:1px solid ", ";border-radius:2px;box-shadow:", ";box-sizing:border-box;color:", ";font-size:", ";font-weight:normal;height:39px;line-height:", ";min-width:0;padding:6px 12px;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;width:100%;&:focus{border-color:", ";box-shadow:", ";outline:0;}&:disabled{background-color:", ";cursor:not-allowed;}&:read-only{background-color:", ";cursor:text;}"], function (props) {
3956 return props.borderColor;
3957}, function (props) {
3958 return props.boxShadow;
3959}, function (props) {
3960 return props.theme.colors.black;
3961}, function (props) {
3962 return props.theme.font.baseFontSize;
3963}, function (props) {
3964 return props.theme.font.baseLineHeight;
3965}, function (props) {
3966 return props.focusBorderColor;
3967}, function (props) {
3968 return props.focusBoxShadow;
3969}, function (props) {
3970 return props.theme.colors.gray2;
3971}, function (props) {
3972 return props.theme.colors.gray2;
3973});
3974
3975var defaultBorderRadius = '2px';
3976var AddOn = styled__default.div(["background-color:", ";border:1px solid ", ";border-radius:", ";box-sizing:border-box;color:", ";display:flex;flex-direction:column;height:39px;justify-content:center;line-height:1;margin:0;outline:0;padding:6px 11px;"], function (props) {
3977 return props.addOnBgColor;
3978}, function (props) {
3979 return props.addOnBgColor === props.theme.colors.gray3 ? props.theme.colors.gray5 : props.addOnBgColor;
3980}, defaultBorderRadius, function (props) {
3981 return props.addOnTextColor;
3982});
3983var Prepend = styled__default(AddOn)(["border-bottom-right-radius:0;border-right:none;border-top-right-radius:0;"]);
3984var Append = styled__default(AddOn)(["border-bottom-left-radius:0;border-left:none;border-top-left-radius:0;"]);
3985var InputWrapper = styled__default.div(["display:flex;"]);
3986
3987var defaultBorderRadius$1 = '2px';
3988var TextboxBase = styled__default(InputBase)(["border-bottom-left-radius:", ";border-bottom-right-radius:", ";border-top-left-radius:", ";border-top-right-radius:", ";display:table-cell;-webkit-appearance:none;"], function (props) {
3989 return props.hasPrepend ? '0' : defaultBorderRadius$1;
3990}, function (props) {
3991 return props.hasAppend ? '0' : defaultBorderRadius$1;
3992}, function (props) {
3993 return props.hasPrepend ? '0' : defaultBorderRadius$1;
3994}, function (props) {
3995 return props.hasAppend ? '0' : defaultBorderRadius$1;
3996});
3997var Textbox =
3998/*#__PURE__*/
3999React__default.forwardRef(function Textbox(props, ref) {
4000 var prependIconName = props.prependIconName,
4001 appendIconName = props.appendIconName,
4002 type = props.type,
4003 additionalTextProps = _objectWithoutProperties(props, ["prependIconName", "appendIconName", "type"]);
4004
4005 var theme = useTheme();
4006 var validationState = React__default.useContext(ValidationContext);
4007 var inputRef = React__default.useRef();
4008 React__default.useImperativeHandle(ref, function () {
4009 return inputRef.current;
4010 });
4011 var hasPrepend = !!prependIconName;
4012 var hasAppend = !!appendIconName;
4013 var hasValidationState = validationState !== 'default';
4014 var addOnTextColor = hasValidationState ? theme.colors.white : theme.colors.gray8;
4015 var addOnBgColor = hasValidationState ? theme.validationTextColor[validationState] : theme.colors.gray3;
4016
4017 function focusInput() {
4018 inputRef.current.focus();
4019 }
4020
4021 return (
4022 /*#__PURE__*/
4023 React__default.createElement(InputWrapper, null, hasPrepend &&
4024 /*#__PURE__*/
4025 React__default.createElement(Prepend, {
4026 addOnTextColor: addOnTextColor,
4027 addOnBgColor: addOnBgColor,
4028 "aria-hidden": "true",
4029 onClick: focusInput
4030 },
4031 /*#__PURE__*/
4032 React__default.createElement(Icon, {
4033 "aria-hidden": "true",
4034 name: prependIconName,
4035 size: 18
4036 })),
4037 /*#__PURE__*/
4038 React__default.createElement(TextboxBase, _extends({
4039 hasAppend: hasAppend,
4040 hasPrepend: hasPrepend,
4041 ref: inputRef,
4042 type: type
4043 }, additionalTextProps, theme.validationInputColor[validationState])), hasAppend &&
4044 /*#__PURE__*/
4045 React__default.createElement(Append, {
4046 addOnTextColor: addOnTextColor,
4047 addOnBgColor: addOnBgColor,
4048 "aria-hidden": "true",
4049 onClick: focusInput
4050 },
4051 /*#__PURE__*/
4052 React__default.createElement(Icon, {
4053 "aria-hidden": "true",
4054 name: appendIconName,
4055 size: 18
4056 })))
4057 );
4058});
4059Textbox.propTypes = process.env.NODE_ENV !== "production" ? {
4060 /** Content to prepend input box with */
4061 prependIconName: PropTypes.string,
4062
4063 /** Content to append to input box */
4064 appendIconName: PropTypes.string,
4065
4066 /** The type attribute for the textboxa */
4067 type: PropTypes.string
4068} : {};
4069Textbox.defaultProps = {
4070 prependIconName: undefined,
4071 appendIconName: undefined,
4072 type: 'text'
4073};
4074
4075var TextareaBase = styled__default.textarea(["border:1px solid ", ";border-radius:2px;box-shadow:", ";box-sizing:border-box;color:", ";font-size:", ";font-weight:normal;line-height:", ";min-width:0;padding:6px 12px;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;&:focus{border-color:", ";box-shadow:", ";outline:0;}&:disabled{background-color:", ";cursor:not-allowed;}&:read-only{background-color:", ";cursor:text;}"], function (props) {
4076 return props.borderColor;
4077}, function (props) {
4078 return props.boxShadow;
4079}, function (props) {
4080 return props.theme.colors.black;
4081}, function (props) {
4082 return props.theme.font.baseFontSize;
4083}, function (props) {
4084 return props.theme.font.baseLineHeight;
4085}, function (props) {
4086 return props.focusBorderColor;
4087}, function (props) {
4088 return props.focusBoxShadow;
4089}, function (props) {
4090 return props.theme.colors.gray2;
4091}, function (props) {
4092 return props.theme.colors.gray2;
4093});
4094var Textarea =
4095/*#__PURE__*/
4096React__default.forwardRef(function Textarea(props, ref) {
4097 var theme = useTheme();
4098 var validationState = React__default.useContext(ValidationContext);
4099 return (
4100 /*#__PURE__*/
4101 React__default.createElement(TextareaBase, _extends({
4102 ref: ref
4103 }, props, theme.validationInputColor[validationState]))
4104 );
4105});
4106
4107var inputMask = {
4108 date: {
4109 mask: [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/],
4110 pipe: createautoCorrectedDatePipe('mm/dd/yyyy'),
4111 showMask: false,
4112 keepCharPositions: true,
4113 placeholderChar: "\u2000",
4114 title: 'Enter month, day, and 4-digit year'
4115 },
4116 dollar: {
4117 mask: createNumberMask({
4118 prefix: '$'
4119 })
4120 },
4121 phone: {
4122 mask: ['(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/],
4123 showMask: false,
4124 keepCharPositions: true,
4125 placeholderChar: "\u2000",
4126 title: 'Enter area code and phone number'
4127 },
4128 ssnum: {
4129 mask: [/\d/, /\d/, /\d/, '-', /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/],
4130 showMask: false,
4131 keepCharPositions: true,
4132 placeholderChar: "\u2000",
4133 title: 'Enter 9-digit social security number'
4134 },
4135 zip: {
4136 mask: [/\d/, /\d/, /\d/, /\d/, /\d/],
4137 guide: false,
4138 title: 'Enter 5-digit zip code'
4139 }
4140};
4141
4142var MaskedTextbox =
4143/*#__PURE__*/
4144React__default.forwardRef(function MaskedTextbox(props, ref) {
4145 var maskType = props.maskType,
4146 customMask = props.customMask,
4147 additionalTextProps = _objectWithoutProperties(props, ["maskType", "customMask"]);
4148
4149 var inputRef = React__default.useRef();
4150 React__default.useImperativeHandle(ref, function () {
4151 return inputRef.current;
4152 });
4153 var maskArgs = maskType === 'custom' && customMask ? customMask : inputMask[maskType];
4154 return (
4155 /*#__PURE__*/
4156 React__default.createElement(MaskedInput, _extends({
4157 render: function render(maskRef, textboxProps) {
4158 var setRef = function setRef(inputElement) {
4159 // we need to set both the mask ref and the passed in ref
4160 maskRef(inputElement);
4161 inputRef.current = inputElement;
4162 };
4163
4164 return (
4165 /*#__PURE__*/
4166 React__default.createElement(Textbox, _extends({
4167 ref: setRef
4168 }, textboxProps))
4169 );
4170 }
4171 }, maskArgs, {
4172 type: "text"
4173 }, additionalTextProps))
4174 );
4175});
4176MaskedTextbox.propTypes = process.env.NODE_ENV !== "production" ? {
4177 /** Sets a mask type on the input */
4178 maskType: PropTypes.oneOf(['date', 'dollar', 'phone', 'ssnum', 'zip', 'custom']).isRequired,
4179
4180 /** Provide a custom mask */
4181 customMask: PropTypes.shape({
4182 mask: PropTypes.oneOfType([PropTypes.array, PropTypes.func]).isRequired,
4183 guide: PropTypes.bool,
4184 placeholderChar: PropTypes.string,
4185 keepCharPositions: PropTypes.bool,
4186 pipe: PropTypes.func,
4187 showMask: PropTypes.bool
4188 })
4189} : {};
4190MaskedTextbox.defaultProps = {
4191 customMask: undefined
4192};
4193
4194var StyledButton$4 = styled__default(Button)(["background-color:", ";border-color:", ";color:", ";@media (hover:hover),(-ms-high-contrast:none){&:hover{background-color:", ";border-color:", ";}}"], function (props) {
4195 return props.defaultStyle.bgColor;
4196}, function (props) {
4197 return props.defaultStyle.bgColor;
4198}, function (props) {
4199 return props.theme.colors.black;
4200}, function (props) {
4201 return props.hoverStyle.bgColor;
4202}, function (props) {
4203 return props.hoverStyle.bgColor;
4204});
4205var ActionButton =
4206/*#__PURE__*/
4207React__default.forwardRef(function ActionButton(props, ref) {
4208 var children = props.children,
4209 styleType = props.styleType,
4210 other = _objectWithoutProperties(props, ["children", "styleType"]);
4211
4212 var theme = useTheme();
4213 var defaultStyle = theme.buttonStyles.button.variant.default;
4214 var hoverStyle = theme.buttonStyles.button.variant[styleType];
4215 return (
4216 /*#__PURE__*/
4217 React__default.createElement(StyledButton$4, _extends({
4218 ref: ref,
4219 defaultStyle: defaultStyle,
4220 hoverStyle: hoverStyle,
4221 styleType: styleType,
4222 type: "button"
4223 }, other), children)
4224 );
4225});
4226ActionButton.propTypes = process.env.NODE_ENV !== "production" ? {
4227 children: PropTypes.node.isRequired,
4228
4229 /** Select the color style of the button, types come from theme buttonStyles.button */
4230 styleType: PropTypes.string
4231} : {};
4232ActionButton.defaultProps = {
4233 styleType: 'primary'
4234};
4235
4236var SplitButton = styled__default(Button)(["", " ", " min-width:10px;padding-left:8px;padding-right:6px;span{margin-left:0;}"], function (props) {
4237 return props.flatLeftEdge && "\n border-left: solid 1px ".concat(props.theme.colors.gray9, ";\n ");
4238}, function (props) {
4239 return props.flatRightEdge && "\n border-right: solid 1px ".concat(props.theme.colors.gray9, ";\n ");
4240});
4241var Caret = styled__default.span(["border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px dashed;display:inline-block;height:0;margin-left:5px;vertical-align:middle;width:0;"]);
4242var ButtonPanel = styled__default.div(["background-color:", ";border:1px solid ", ";display:", ";margin-top:3px;position:relative;z-index:999;@media (min-width:", "){position:absolute;}"], function (props) {
4243 return props.theme.colors.white;
4244}, function (props) {
4245 return props.theme.colors.gray3;
4246}, function (props) {
4247 return props.isOpen ? 'block' : 'none';
4248}, function (props) {
4249 return props.theme.screenSize.tablet;
4250});
4251var ButtonPanelChildrenContainer = styled__default.div(["display:flex;flex-direction:column;"]);
4252var StyledButtonLink = styled__default(LinkButton)(["color:black;margin-bottom:0;padding:10px 20px;text-align:left;text-decoration:none;&:active,&:focus,&:hover{background-color:", ";color:white;}"], function (props) {
4253 return props.theme.colors.primary;
4254});
4255var TAB_KEY_CODE = 9;
4256var UP_ARROW_CODE = 38;
4257var DOWN_ARROW_CODE = 40;
4258
4259function getFocusables(node) {
4260 var focusableElements = node.querySelectorAll('button');
4261 var firstFocusable = focusableElements[0];
4262 var lastFocusable = focusableElements[focusableElements.length - 1];
4263 return {
4264 focusableElements: focusableElements,
4265 firstFocusable: firstFocusable,
4266 lastFocusable: lastFocusable
4267 };
4268}
4269
4270function isCurrentlyActive(node) {
4271 var rootNode = node.getRootNode();
4272 return rootNode.activeElement === node;
4273}
4274
4275function focusTrap(node) {
4276 var _getFocusables = getFocusables(node),
4277 firstFocusable = _getFocusables.firstFocusable,
4278 lastFocusable = _getFocusables.lastFocusable;
4279
4280 function handleTabFocus(event) {
4281 if (event.key === 'Tab' || event.keyCode === TAB_KEY_CODE) {
4282 if (event.shiftKey) {
4283 if (isCurrentlyActive(firstFocusable)) {
4284 lastFocusable.focus();
4285 event.preventDefault();
4286 }
4287 } else if (isCurrentlyActive(lastFocusable)) {
4288 firstFocusable.focus();
4289 event.preventDefault();
4290 }
4291 }
4292 }
4293
4294 node.addEventListener('keydown', handleTabFocus);
4295 return function removeKeydownListener() {
4296 node.removeEventListener('keydown', handleTabFocus);
4297 };
4298}
4299
4300function arrowMovement(node) {
4301 var _getFocusables2 = getFocusables(node),
4302 focusableElements = _getFocusables2.focusableElements,
4303 firstFocusable = _getFocusables2.firstFocusable,
4304 lastFocusable = _getFocusables2.lastFocusable;
4305
4306 var focusables = _toConsumableArray(focusableElements);
4307
4308 var rootNode = node.getRootNode();
4309
4310 function handleArrowMovementKeys(event) {
4311 if (event.keyCode === UP_ARROW_CODE) {
4312 if (isCurrentlyActive(firstFocusable)) {
4313 lastFocusable.focus();
4314 event.preventDefault();
4315 } else {
4316 var index = _indexOfInstanceProperty(focusables).call(focusables, rootNode.activeElement);
4317
4318 focusables[index - 1].focus();
4319 event.preventDefault();
4320 }
4321 }
4322
4323 if (event.keyCode === DOWN_ARROW_CODE) {
4324 if (isCurrentlyActive(lastFocusable)) {
4325 firstFocusable.focus();
4326 event.preventDefault();
4327 } else {
4328 var _index = _indexOfInstanceProperty(focusables).call(focusables, rootNode.activeElement);
4329
4330 focusableElements[_index + 1].focus();
4331
4332 event.preventDefault();
4333 }
4334 }
4335 }
4336
4337 node.addEventListener('keydown', handleArrowMovementKeys);
4338 return function removeArrowMovementListener() {
4339 node.removeEventListener('keydown', handleArrowMovementKeys);
4340 };
4341}
4342
4343var _StyledRootCloseWrapper = styled__default(RootCloseWrapper)(["display:", ";flex-direction:column;position:relative;"], function (p) {
4344 return p._css;
4345});
4346
4347var _StyledDiv$1 = styled__default("div")(["position:relative;"]);
4348
4349function DropdownButton(_ref) {
4350 var id = _ref.id,
4351 rootClose = _ref.rootClose,
4352 children = _ref.children,
4353 buttonValue = _ref.buttonValue,
4354 manualButtonValue = _ref.manualButtonValue,
4355 shouldCloseOnButtonClick = _ref.shouldCloseOnButtonClick,
4356 shouldUpdateButtonValue = _ref.shouldUpdateButtonValue,
4357 styleType = _ref.styleType,
4358 inline = _ref.inline,
4359 flatLeftEdge = _ref.flatLeftEdge,
4360 flatRightEdge = _ref.flatRightEdge,
4361 otherProps = _objectWithoutProperties(_ref, ["id", "rootClose", "children", "buttonValue", "manualButtonValue", "shouldCloseOnButtonClick", "shouldUpdateButtonValue", "styleType", "inline", "flatLeftEdge", "flatRightEdge"]);
4362
4363 var ActivationButton = flatLeftEdge || flatRightEdge ? SplitButton : Button;
4364
4365 var _useState = React.useState(buttonValue),
4366 _useState2 = _slicedToArray(_useState, 2),
4367 buttonStateValue = _useState2[0],
4368 setButtonStateValue = _useState2[1];
4369
4370 var _useState3 = React.useState(false),
4371 _useState4 = _slicedToArray(_useState3, 2),
4372 isOpen = _useState4[0],
4373 setIsOpen = _useState4[1];
4374
4375 var initialRender = React.useRef(true);
4376 var buttonDropdown = React.useRef();
4377 var triggerButton = React.useRef();
4378 var panelId = useUniqueId(id);
4379 React.useEffect(function () {
4380 var removeFocusTrapListener = focusTrap(buttonDropdown.current);
4381 var removeArrowMovementListener = arrowMovement(buttonDropdown.current);
4382 return function removeListeners() {
4383 removeFocusTrapListener();
4384 removeArrowMovementListener();
4385 };
4386 }, [isOpen]);
4387 React.useEffect(function () {
4388 if (!initialRender.current) {
4389 triggerButton.current.focus();
4390 }
4391
4392 initialRender.current = false;
4393 }, [isOpen]);
4394
4395 var toggleDropdown = function toggleDropdown() {
4396 return setIsOpen(!isOpen);
4397 };
4398
4399 function closeDropdown() {
4400 if (isOpen) {
4401 setIsOpen(false);
4402 }
4403 }
4404
4405 function handleDropdownItemClick(buttonProps) {
4406 return function (event) {
4407 if (shouldUpdateButtonValue) {
4408 setButtonStateValue(buttonProps.children);
4409 }
4410
4411 if (shouldCloseOnButtonClick) {
4412 closeDropdown();
4413 }
4414
4415 buttonProps.onClick(event, buttonProps.name);
4416 };
4417 }
4418
4419 return (
4420 /*#__PURE__*/
4421 React__default.createElement(_StyledRootCloseWrapper, {
4422 onRootClose: closeDropdown,
4423 disabled: !rootClose,
4424 _css: inline ? 'inline-flex' : 'block'
4425 },
4426 /*#__PURE__*/
4427 React__default.createElement("div", {
4428 ref: buttonDropdown,
4429 role: "combobox",
4430 "aria-controls": panelId,
4431 "aria-expanded": isOpen,
4432 "aria-haspopup": "listbox"
4433 },
4434 /*#__PURE__*/
4435 React__default.createElement(ActivationButton, _extends({}, otherProps, {
4436 flatLeftEdge: flatLeftEdge,
4437 flatRightEdge: flatRightEdge,
4438 onClick: toggleDropdown,
4439 "aria-haspopup": "true",
4440 "aria-pressed": isOpen,
4441 className: isOpen ? "".concat(otherProps && otherProps.className, " pressed") : otherProps.className,
4442 ref: triggerButton,
4443 styleType: styleType
4444 }), manualButtonValue || buttonStateValue,
4445 /*#__PURE__*/
4446 React__default.createElement(Caret, null)),
4447 /*#__PURE__*/
4448 React__default.createElement(_StyledDiv$1, null,
4449 /*#__PURE__*/
4450 React__default.createElement(ButtonPanel, {
4451 isOpen: isOpen,
4452 id: panelId
4453 },
4454 /*#__PURE__*/
4455 React__default.createElement(ButtonPanelChildrenContainer, null, _mapInstanceProperty(React.Children).call(React.Children, children, function (child) {
4456 var onClickHandler = handleDropdownItemClick(child.props);
4457 var newProps = {
4458 onClick: onClickHandler,
4459 role: 'option'
4460 };
4461 return (
4462 /*#__PURE__*/
4463 React__default.cloneElement(child, newProps)
4464 );
4465 }))))))
4466 );
4467}
4468
4469DropdownButton.Button = StyledButtonLink;
4470DropdownButton.propTypes = process.env.NODE_ENV !== "production" ? {
4471 /** Content shown in the button */
4472 buttonValue: PropTypes.any,
4473
4474 /**
4475 * Defines what value should be displayed on the button.
4476 * Overrides the stored state value, and renders shouldUpdateButtonValue
4477 * useless
4478 */
4479 manualButtonValue: PropTypes.node,
4480 children: PropTypes.any.isRequired,
4481
4482 /**
4483 * Defines if the buttons value should update to the last pressed,
4484 * childs value.
4485 */
4486 shouldUpdateButtonValue: PropTypes.bool,
4487
4488 /** Defines if the dropdown should close when any child button is clicked */
4489 shouldCloseOnButtonClick: PropTypes.bool,
4490
4491 /**
4492 * Defines whether the dropdown will close when any other element on the page is clicked.
4493 * Uses RootCloseWrapper from React-Overlay
4494 */
4495 rootClose: PropTypes.bool,
4496
4497 /** Select the color style of the button, types come from theme */
4498 styleType: PropTypes.string,
4499
4500 /** Display the dropdown button inline */
4501 inline: PropTypes.bool,
4502 id: PropTypes.string,
4503
4504 /** Styles the Button with a flat left edge */
4505 flatLeftEdge: PropTypes.bool,
4506
4507 /** Styles the Button with a flat right edge */
4508 flatRightEdge: PropTypes.bool
4509} : {};
4510DropdownButton.defaultProps = {
4511 buttonValue: undefined,
4512 manualButtonValue: undefined,
4513 shouldUpdateButtonValue: false,
4514 shouldCloseOnButtonClick: false,
4515 styleType: 'default',
4516 rootClose: false,
4517 inline: false,
4518 id: undefined,
4519 flatLeftEdge: false,
4520 flatRightEdge: false
4521};
4522
4523var Container$1 = styled__default.div(["align-items:center;display:flex;flex-direction:column;max-width:", ";"], function (props) {
4524 return props.maxWidth;
4525});
4526var StyledIconButton = styled__default(OutlineButton)(["background-color:", ";border-radius:50%;border-width:3px;color:", ";display:inline-block;font-weight:normal;min-width:0;padding:13px 14px;width:auto;-webkit-tap-highlight-color:transparent;"], function (props) {
4527 return props.isHighlighted && props.activeColor;
4528}, function (props) {
4529 return props.isHighlighted && props.theme.colors.white;
4530});
4531var IncompleteButton = styled__default(StyledIconButton)(["background-color:", ";border-left:3px dashed ", ";color:", ";transform:rotate(45deg);&:hover,&:active{background-color:", ";color:", ";}& i{transform:rotate(-45deg) translate(-1px,1px);}"], function (props) {
4532 return props.isHighlighted ? props.theme.colors.gray5 : props.theme.colors.white;
4533}, function (props) {
4534 return props.theme.colors.gray5;
4535}, function (props) {
4536 return props.isHighlighted ? props.theme.colors.white : props.theme.colors.gray5;
4537}, function (props) {
4538 return props.theme.colors.gray6;
4539}, function (props) {
4540 return props.theme.colors.white;
4541});
4542var IconText = styled__default.span(["font-size:", "px;font-weight:", ";margin-top:6px;max-width:", ";overflow:hidden;text-overflow:ellipsis;white-space:nowrap;"], function (props) {
4543 return props.fontSize;
4544}, function (props) {
4545 return props.isHighlighted ? 'bold' : 'normal';
4546}, function (props) {
4547 return props.maxWidth;
4548});
4549
4550function IconButton(_ref) {
4551 var iconName = _ref.iconName,
4552 iconSize = _ref.iconSize,
4553 childrenFontSize = _ref.childrenFontSize,
4554 isHighlighted = _ref.isHighlighted,
4555 isIncomplete = _ref.isIncomplete,
4556 disabled = _ref.disabled,
4557 maxWidth = _ref.maxWidth,
4558 onClick = _ref.onClick,
4559 styleType = _ref.styleType,
4560 children = _ref.children,
4561 otherProps = _objectWithoutProperties(_ref, ["iconName", "iconSize", "childrenFontSize", "isHighlighted", "isIncomplete", "disabled", "maxWidth", "onClick", "styleType", "children"]);
4562
4563 var CurrentButton = isIncomplete ? IncompleteButton : StyledIconButton;
4564 var theme = useTheme();
4565 var textId = generateAlphaName();
4566 var buttonStyle = theme.buttonStyles.outlineButton.variant[styleType];
4567 return (
4568 /*#__PURE__*/
4569 React__default.createElement(Container$1, _extends({
4570 maxWidth: maxWidth
4571 }, otherProps),
4572 /*#__PURE__*/
4573 React__default.createElement(CurrentButton, {
4574 onClick: onClick,
4575 styleType: styleType,
4576 isHighlighted: isHighlighted,
4577 disabled: disabled,
4578 activeColor: buttonStyle.bgColor,
4579 "aria-describedby": textId
4580 },
4581 /*#__PURE__*/
4582 React__default.createElement(Icon, {
4583 name: iconName,
4584 size: iconSize
4585 })),
4586 /*#__PURE__*/
4587 React__default.createElement(IconText, {
4588 id: textId,
4589 isHighlighted: isHighlighted,
4590 maxWidth: maxWidth,
4591 fontSize: childrenFontSize
4592 }, children))
4593 );
4594}
4595
4596IconButton.propTypes = process.env.NODE_ENV !== "production" ? {
4597 /** Used to specify the icon used within the button */
4598 iconName: PropTypes.string.isRequired,
4599
4600 /** The font size of the inner icon */
4601 iconSize: PropTypes.number,
4602
4603 /** The font size of the text displayed below the icon */
4604 childrenFontSize: PropTypes.number,
4605
4606 /** Determines whether the icon is shown with a solid background by default */
4607 isHighlighted: PropTypes.bool,
4608
4609 /** Displays the icon with a style representing an incomplete state */
4610 isIncomplete: PropTypes.bool,
4611
4612 /** Disables the click event on the button */
4613 disabled: PropTypes.bool,
4614
4615 /** Sets the max width for the button, affects text ellipsis */
4616 maxWidth: PropTypes.string,
4617
4618 /** Onclick function used by the button */
4619 onClick: PropTypes.func,
4620
4621 /** OutlineButton styleType (from theme) used for the icon */
4622 styleType: PropTypes.string,
4623
4624 /** Content to be displayed below the icon */
4625 children: PropTypes.node
4626} : {};
4627IconButton.defaultProps = {
4628 isHighlighted: false,
4629 isIncomplete: false,
4630 iconSize: 45,
4631 childrenFontSize: 18,
4632 disabled: false,
4633 maxWidth: undefined,
4634 onClick: function onClick() {},
4635 styleType: 'magenta',
4636 children: undefined
4637};
4638
4639function ownKeys$4(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { keys.push.apply(keys, _Object$getOwnPropertySymbols(object)); } if (enumerableOnly) keys = _filterInstanceProperty(keys).call(keys, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
4640
4641function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; _forEachInstanceProperty(_context = ownKeys$4(source, true)).call(_context, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context2; _forEachInstanceProperty(_context2 = ownKeys$4(source)).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
4642var AnswerLabel = styled__default.label(["flex-grow:1;@media (min-width:", "){flex-grow:0;min-width:", ";}"], function (props) {
4643 return props.theme.screenSize.tablet;
4644}, function (props) {
4645 return props.itemWidth;
4646});
4647var AnswerDisplay = styled__default.div(["background-color:", ";border-color:transparent;box-shadow:0 4px 0 0 ", ";color:", ";font-weight:", ";font-size:", ";line-height:", ";margin-bottom:4px;margin-top:0;padding-top:", ";padding-right:", ";padding-bottom:", ";padding-left:", ";text-align:center;text-transform:", ";transition:background-color 250ms linear,color 250ms linear;user-select:none;&:active{background-color:", ";box-shadow:0 0 0 0 transparent;color:", ";margin-bottom:0;margin-top:4px;}@media (hover:hover),(-ms-high-contrast:none){&:hover{background-color:", ";color:", ";}}&[disabled]{cursor:not-allowed;opacity:0.65;> *{pointer-events:none;}}"], function (props) {
4648 return props.buttonStyle.bgColor;
4649}, function (props) {
4650 return darken(props.buttonStyle.bgColor, 10);
4651}, function (props) {
4652 return getTextColor(props.buttonStyle.bgColor);
4653}, function (props) {
4654 return props.buttonSize.fontWeight || 'normal';
4655}, function (props) {
4656 return props.buttonSize.fontSize;
4657}, function (props) {
4658 return props.buttonSize.lineHeight;
4659}, function (props) {
4660 return props.buttonSize.paddingTop;
4661}, function (props) {
4662 return props.buttonSize.paddingSides;
4663}, function (props) {
4664 return props.buttonSize.paddingBottom;
4665}, function (props) {
4666 return props.buttonSize.paddingSides;
4667}, function (props) {
4668 return props.buttonSize.textTransform ? props.buttonSize.textTransform : 'none';
4669}, function (props) {
4670 return darken(props.buttonStyle.bgColor, 8);
4671}, function (props) {
4672 return getTextColor(props.buttonStyle.bgColor);
4673}, function (props) {
4674 return darken(props.buttonStyle.bgColor, 8);
4675}, function (props) {
4676 return getTextColor(props.buttonStyle.bgColor);
4677});
4678var OutlineAnswerDisplay = styled__default(AnswerDisplay)(["background-color:", ";border:2px solid ", ";box-shadow:none;box-sizing:border-box;color:", ";margin:0;&:active{margin:0;}"], function (props) {
4679 return props.isChecked ? props.buttonStyle.bgColor : props.theme.colors.white;
4680}, function (props) {
4681 return props.buttonStyle.borderColor || props.buttonStyle.bgColor;
4682}, function (props) {
4683 return props.isChecked ? props.theme.colors.white : props.buttonStyle.bgColor;
4684});
4685var AnswerInput = styled__default.input(["clip-path:inset(100%);clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px;&:focus + div{background-color:", ";color:", ";}"], function (props) {
4686 return darken(props.buttonStyle.bgColor, 8);
4687}, function (props) {
4688 return getTextColor(props.buttonStyle.bgColor);
4689});
4690
4691function AnswerButton(_ref) {
4692 var name = _ref.name,
4693 children = _ref.children,
4694 itemWidth = _ref.itemWidth,
4695 styleType = _ref.styleType,
4696 selectedType = _ref.selectedType,
4697 size = _ref.size,
4698 isOutline = _ref.isOutline,
4699 checked = _ref.checked,
4700 radioProps = _objectWithoutProperties(_ref, ["name", "children", "itemWidth", "styleType", "selectedType", "size", "isOutline", "checked"]);
4701
4702 var id = useUniqueId(radioProps.id);
4703 var isChecked = radioProps.checked || radioProps.defaultChecked;
4704 var theme = useTheme();
4705 var validationState = React__default.useContext(ValidationContext);
4706 var buttonType = isOutline ? 'outlineButton' : 'button';
4707 var buttonSize = theme.buttonStyles[buttonType].size[size];
4708 var variant = validationState !== 'default' && !isOutline ? validationState : styleType;
4709 var validationBorder = theme.buttonStyles[buttonType].variant[validationState].bgColor;
4710 var selectedStyles = theme.buttonStyles[buttonType].variant[selectedType];
4711 var unSelectedStyles = theme.buttonStyles[buttonType].variant[variant];
4712
4713 if (isOutline && validationState !== 'default') {
4714 selectedStyles = _objectSpread$4(_objectSpread$4({}, selectedStyles), {}, {
4715 borderColor: validationBorder
4716 });
4717 unSelectedStyles = _objectSpread$4(_objectSpread$4({}, unSelectedStyles), {}, {
4718 borderColor: validationBorder
4719 });
4720 }
4721
4722 var buttonStyle = isChecked ? selectedStyles : unSelectedStyles;
4723 var buttonProps = {
4724 disabled: radioProps.disabled,
4725 isChecked: isChecked,
4726 buttonStyle: buttonStyle,
4727 buttonSize: buttonSize
4728 };
4729 var labelProps = {
4730 disabled: radioProps.disabled,
4731 itemWidth: itemWidth,
4732 htmlFor: id,
4733 validationState: validationState
4734 };
4735 var Display = isOutline ? OutlineAnswerDisplay : AnswerDisplay;
4736 return (
4737 /*#__PURE__*/
4738 React__default.createElement(AnswerLabel, labelProps,
4739 /*#__PURE__*/
4740 React__default.createElement(AnswerInput, _extends({
4741 type: "radio",
4742 name: name,
4743 id: id,
4744 buttonStyle: buttonStyle
4745 }, radioProps)),
4746 /*#__PURE__*/
4747 React__default.createElement(Display, buttonProps, children))
4748 );
4749}
4750
4751function ownKeys$5(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { keys.push.apply(keys, _Object$getOwnPropertySymbols(object)); } if (enumerableOnly) keys = _filterInstanceProperty(keys).call(keys, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
4752
4753function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context3; _forEachInstanceProperty(_context3 = ownKeys$5(source, true)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context4; _forEachInstanceProperty(_context4 = ownKeys$5(source)).call(_context4, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
4754
4755function RadioGroup(_ref) {
4756 var _context;
4757
4758 var name = _ref.name,
4759 disableAllOptions = _ref.disableAllOptions,
4760 selectedValue = _ref.selectedValue,
4761 children = _ref.children,
4762 onChange = _ref.onChange,
4763 rest = _objectWithoutProperties(_ref, ["name", "disableAllOptions", "selectedValue", "children", "onChange"]);
4764
4765 return _mapInstanceProperty(_context = React__default.Children).call(_context, children, function (child, index) {
4766 var _context2;
4767
4768 var key = _concatInstanceProperty(_context2 = "".concat(name, "-option-")).call(_context2, index + 1);
4769
4770 var disabled = disableAllOptions || child.props.disabled;
4771 var checked = selectedValue === child.props.value;
4772 return (
4773 /*#__PURE__*/
4774 React__default.cloneElement(child, _objectSpread$5({
4775 key: key,
4776 name: name,
4777 disabled: disabled,
4778 checked: checked,
4779 onChange: onChange
4780 }, rest))
4781 );
4782 });
4783}
4784
4785RadioGroup.propTypes = process.env.NODE_ENV !== "production" ? {
4786 /** The name of the radio group */
4787 name: PropTypes.string.isRequired,
4788
4789 /** Selected option for the radio group */
4790 selectedValue: PropTypes.any,
4791
4792 /** Disable all radio buttons */
4793 disableAllOptions: PropTypes.bool,
4794
4795 /** Function to change selected value */
4796 onChange: PropTypes.func
4797} : {};
4798RadioGroup.defaultProps = {
4799 selectedValue: undefined,
4800 disableAllOptions: false,
4801 onChange: _noop
4802};
4803
4804var outlineStyles = styled.css(["> label:first-child > div{border-radius:4px 0 0 4px;}> label:last-child > div{border-left:none;border-radius:0 4px 4px 0;}> label:not(:first-child):not(:last-child) > div{border-left:1px;}"]);
4805var AnswerSet = styled__default.div(["display:flex;flex-wrap:nowrap;", ";"], function (props) {
4806 return props.isOutline && outlineStyles;
4807});
4808
4809function AnswerGroup(props) {
4810 return (
4811 /*#__PURE__*/
4812 React__default.createElement(AnswerSet, {
4813 isOutline: props.isOutline
4814 },
4815 /*#__PURE__*/
4816 React__default.createElement(RadioGroup, props))
4817 );
4818}
4819
4820AnswerGroup.propTypes = process.env.NODE_ENV !== "production" ? {
4821 /** The name of the answer group */
4822 name: PropTypes.string.isRequired,
4823 children: PropTypes.node.isRequired,
4824
4825 /** The width of each item when not in mobile view */
4826 itemWidth: PropTypes.string,
4827
4828 /** Select the color style of the buttons, types come from theme */
4829 styleType: PropTypes.string,
4830
4831 /** Select the color style of the selected button, types come from theme */
4832 selectedType: PropTypes.string,
4833
4834 /** Set the button size, sizes come from theme (buttonStyles) */
4835 size: PropTypes.string,
4836
4837 /** Set if the items should have a flat outline style */
4838 isOutline: PropTypes.bool,
4839
4840 /** Disable all radio buttons */
4841 disableAllOptions: PropTypes.bool,
4842
4843 /** Selected option for the answer group */
4844 selectedValue: PropTypes.any
4845} : {};
4846AnswerGroup.defaultProps = {
4847 styleType: 'default',
4848 selectedType: 'success',
4849 size: 'default',
4850 itemWidth: '100px',
4851 isOutline: false,
4852 disableAllOptions: false,
4853 selectedValue: undefined
4854};
4855
4856function getRadioFillVariables(isChecked, isDisabled, validationState, colors) {
4857 var isNotDisabled = !isDisabled;
4858 var isValid = validationState === 'default';
4859
4860 if (isDisabled) {
4861 return {
4862 fill: colors.gray5
4863 };
4864 }
4865
4866 if (isNotDisabled && !isValid) {
4867 return {
4868 fill: colors[validationState],
4869 hover: colors.gray3
4870 };
4871 }
4872
4873 if (isChecked && isNotDisabled) {
4874 return {
4875 fill: colors.primary
4876 };
4877 }
4878
4879 return {
4880 fill: colors.gray8,
4881 hover: colors.gray3
4882 };
4883}
4884
4885function ownKeys$6(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { keys.push.apply(keys, _Object$getOwnPropertySymbols(object)); } if (enumerableOnly) keys = _filterInstanceProperty(keys).call(keys, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
4886
4887function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; _forEachInstanceProperty(_context = ownKeys$6(source, true)).call(_context, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context2; _forEachInstanceProperty(_context2 = ownKeys$6(source)).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
4888
4889function radioFill(color) {
4890 return "\n background-color: ".concat(color, ";\n border-radius: 50%;\n content: '';\n display: block;\n height: 13px;\n left: 3px;\n position: relative;\n width: 13px;\n top: 3px;\n transition: background 0.25s linear;\n ");
4891}
4892
4893var RadioLabel = styled__default(Label)(["align-self:flex-start;cursor:pointer;display:flex;font-family:'Source Sans Pro','Segoe UI',Segoe,Calibri,Tahoma,sans-serif;font-size:", ";font-weight:normal;line-height:", ";margin-right:15px;margin-bottom:10px;position:relative;padding:10px 0 10px 10px;text-transform:none;&:hover > .es-radio__fill:before{", ";}@media (min-width:", "){padding:5px 0;}"], function (props) {
4894 return props.theme.font.baseFontSize;
4895}, function (props) {
4896 return props.theme.font.baseLineHeight;
4897}, function (props) {
4898 return !props.checked && radioFill(props.hoverFillColor);
4899}, function (props) {
4900 return props.theme.screenSize.tablet;
4901});
4902var RadioInput = styled__default.input(["clip:rect(0,0,0,0);pointer-events:none;position:absolute;&:focus ~ .es-radio__fill{box-shadow:0 0 3px 3px ", ";}"], function (props) {
4903 return props.theme.colors.inputFocus;
4904});
4905var RadioDisplay = styled__default.span(["border:3px solid ", ";border-radius:50%;box-sizing:border-box;height:25px;margin-right:8px;min-width:25px;&:before{", ";}"], function (props) {
4906 return props.borderColor;
4907}, function (props) {
4908 return radioFill(_fillInstanceProperty(props));
4909});
4910function RadioButton(_ref) {
4911 var children = _ref.children,
4912 className = _ref.className,
4913 radioProps = _objectWithoutProperties(_ref, ["children", "className"]);
4914
4915 var id = useUniqueId(radioProps.id);
4916 var isChecked = radioProps.checked;
4917 var theme = useTheme();
4918 var validationState = React__default.useContext(ValidationContext);
4919
4920 var _getRadioFillVariable = getRadioFillVariables(isChecked, radioProps.disabled, validationState, theme.colors),
4921 hover = _getRadioFillVariable.hover,
4922 fill = _fillInstanceProperty(_getRadioFillVariable);
4923
4924 var radioDisplayFill = isChecked ? fill : theme.colors.white;
4925 var labelProps = {
4926 disabled: radioProps.disabled,
4927 htmlFor: id,
4928 hoverFillColor: hover,
4929 validationState: validationState,
4930 checked: isChecked
4931 };
4932
4933 var inputProps = _objectSpread$6(_objectSpread$6({}, radioProps), {}, {
4934 checked: isChecked
4935 });
4936
4937 return (
4938 /*#__PURE__*/
4939 React__default.createElement(RadioLabel, _extends({
4940 className: className
4941 }, labelProps),
4942 /*#__PURE__*/
4943 React__default.createElement(RadioInput, _extends({
4944 type: "radio",
4945 id: id
4946 }, inputProps)),
4947 /*#__PURE__*/
4948 React__default.createElement(RadioDisplay, {
4949 className: "es-radio__fill",
4950 borderColor: fill,
4951 fill: radioDisplayFill
4952 }), children)
4953 );
4954}
4955RadioButton.propTypes = process.env.NODE_ENV !== "production" ? {
4956 /** supports styled-component usage, applies to the wrapping Label */
4957 className: PropTypes.string,
4958 children: PropTypes.any
4959} : {};
4960RadioButton.defaultProps = {
4961 className: undefined,
4962 children: undefined
4963};
4964
4965var DropdownBase = styled__default.select(["background-color:", ";border:1px solid ", ";border-radius:2px;box-shadow:", ";box-sizing:border-box;color:", ";flex:auto;font-size:", ";font-weight:normal;height:39px;min-width:100px;padding:6px 12px;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;&:focus{border-color:", ";box-shadow:", ";outline:0;}&:disabled{background-color:", ";cursor:not-allowed;}"], function (props) {
4966 return props.theme.colors.white;
4967}, function (props) {
4968 return props.theme.colors.gray5;
4969}, function (props) {
4970 return props.boxShadow;
4971}, function (props) {
4972 return props.theme.colors.black;
4973}, function (props) {
4974 return props.theme.font.baseFontSize;
4975}, function (props) {
4976 return props.focusBorderColor;
4977}, function (props) {
4978 return props.focusBoxShadow;
4979}, function (props) {
4980 return props.theme.colors.gray2;
4981});
4982
4983function Dropdown(props) {
4984 return (
4985 /*#__PURE__*/
4986 React__default.createElement(DropdownBase, props)
4987 );
4988}
4989
4990var backgroundColorSelect = function backgroundColorSelect(checked, theme, validationState) {
4991 if (checked) {
4992 return validationState === 'default' ? theme.colors.primary : theme.colors[validationState];
4993 }
4994
4995 return theme.colors.white;
4996};
4997
4998var CheckboxLabel = styled__default(Label)(["font-size:", ";font-family:'Source Sans Pro','Segoe UI',Segoe,Calibri,Tahoma,sans-serif;font-size:", ";font-weight:normal;line-height:", ";margin-left:-10px;min-height:25px;padding:10px 0 10px 42px;position:relative;@media (min-width:", "){margin-left:0;padding:5px 0 5px 32px;}.es-checkbox__fill{background-color:", ";border-color:", ";&:after{border-color:", ";}}&:hover .es-checkbox__fill:after{border-color:", ";}&[disabled] .es-checkbox__fill{background-color:", ";border-color:", ";cursor:not-allowed;outline:0;&:after{border-color:", ";}}"], function (props) {
4999 return props.theme.font.baseFontSize;
5000}, function (props) {
5001 return props.theme.font.baseFontSize;
5002}, function (props) {
5003 return props.theme.font.baseLineHeight;
5004}, function (props) {
5005 return props.theme.screenSize.tablet;
5006}, function (_ref) {
5007 var checked = _ref.checked,
5008 theme = _ref.theme,
5009 validationState = _ref.validationState;
5010 return backgroundColorSelect(checked, theme, validationState);
5011}, function (_ref2) {
5012 var checked = _ref2.checked,
5013 theme = _ref2.theme,
5014 validationState = _ref2.validationState;
5015 return checked && validationState === 'default' ? theme.colors.primary : theme.colors[validationState];
5016}, function (props) {
5017 return props.theme.colors.white;
5018}, function (_ref3) {
5019 var checked = _ref3.checked,
5020 theme = _ref3.theme;
5021 return checked ? theme.colors.white : theme.colors.gray3;
5022}, function (_ref4) {
5023 var checked = _ref4.checked,
5024 theme = _ref4.theme;
5025 return checked ? theme.colors.gray5 : theme.colors.white;
5026}, function (props) {
5027 return props.theme.colors.gray5;
5028}, function (props) {
5029 return props.theme.colors.white;
5030});
5031var CheckboxInput = styled__default.input(["clip:rect(0,0,0,0);pointer-events:none;position:absolute;&:focus ~ .es-checkbox__fill{box-shadow:0 0 3px 3px ", ";&:after{border-color:", ";}}"], function (props) {
5032 return props.theme.colors.inputFocus;
5033}, function (_ref5) {
5034 var checked = _ref5.checked,
5035 theme = _ref5.theme;
5036 return checked ? theme.colors.white : theme.colors.gray3;
5037});
5038var CheckboxDisplay = styled__default.span(["background:", ";border:3px solid ", ";border-radius:4px;box-sizing:border-box;cursor:pointer;height:25px;left:10px;position:absolute;top:0.55em;transition:all 0.25s linear,box-shadow 0.15s linear;width:25px;@media (min-width:", "){left:0;top:0.35em;}&:after{background:transparent;border:3px solid ", ";border-right:none;border-top:none;box-sizing:border-box;content:'';display:block;height:9px;margin:3px 0 0 2px;transform:rotate(-45deg);transition:border 0.25s linear;width:15px;}"], function (props) {
5039 return props.theme.colors.white;
5040}, function (props) {
5041 return props.theme.colors.gray8;
5042}, function (props) {
5043 return props.theme.screenSize.tablet;
5044}, function (props) {
5045 return props.theme.colors.white;
5046});
5047
5048function Checkbox(_ref6) {
5049 var children = _ref6.children,
5050 checkboxProps = _objectWithoutProperties(_ref6, ["children"]);
5051
5052 var validationState = React__default.useContext(ValidationContext);
5053 return (
5054 /*#__PURE__*/
5055 React__default.createElement(CheckboxLabel, {
5056 validationState: validationState,
5057 checked: checkboxProps.checked,
5058 disabled: checkboxProps.disabled
5059 },
5060 /*#__PURE__*/
5061 React__default.createElement(CheckboxInput, _extends({
5062 type: "checkbox"
5063 }, checkboxProps)),
5064 /*#__PURE__*/
5065 React__default.createElement(CheckboxDisplay, {
5066 className: "es-checkbox__fill"
5067 }), children)
5068 );
5069}
5070
5071Checkbox.propTypes = process.env.NODE_ENV !== "production" ? {
5072 children: PropTypes.any
5073} : {};
5074Checkbox.defaultProps = {
5075 children: undefined
5076};
5077
5078var Label$1 = styled__default(CheckboxLabel)(["font-weight:bold;margin-bottom:10px;padding:10px 0 10px 62px;@media (min-width:", "){margin-left:0;padding:5px 0 5px 52px;}", ""], function (props) {
5079 return props.theme.screenSize.tablet;
5080}, function (_ref) {
5081 var textOnHover = _ref.textOnHover;
5082 return textOnHover && "\n &:hover {\n .es-checkbox__text {\n opacity: 1;\n transition: visibility 0s linear 10ms, opacity 10ms;\n visibility: visible;\n }\n }\n ";
5083});
5084var Well = styled__default.div(["background-color:", ";border:solid 1px ", ";border-radius:2px;display:inline-block;height:45px;left:10px;margin-right:6px;position:absolute;top:-1px;width:45px;@media (min-width:", "){left:0;top:-6px;}"], function (props) {
5085 return props.theme.colors.gray1;
5086}, function (props) {
5087 return props.theme.colors.gray3;
5088}, function (props) {
5089 return props.theme.screenSize.tablet;
5090});
5091var Display = styled__default(CheckboxDisplay)(["&&{left:10px;top:10px;}"]);
5092var Text = styled__default.span(["", ""], function (_ref2) {
5093 var textOnHover = _ref2.textOnHover,
5094 theme = _ref2.theme;
5095 return textOnHover && "\n @media (min-width: ".concat(theme.screenSize.tablet, ") {\n opacity: 0;\n transition: visibility 0s linear 500ms, opacity 500ms;\n visibility: hidden;\n }\n ");
5096});
5097
5098function CheckAllBox(_ref3) {
5099 var children = _ref3.children,
5100 checkboxProps = _objectWithoutProperties(_ref3, ["children"]);
5101
5102 var validationState = React__default.useContext(ValidationContext);
5103 return (
5104 /*#__PURE__*/
5105 React__default.createElement(Label$1, {
5106 validationState: validationState,
5107 checked: checkboxProps.checked,
5108 disabled: checkboxProps.disabled
5109 },
5110 /*#__PURE__*/
5111 React__default.createElement(Well, null,
5112 /*#__PURE__*/
5113 React__default.createElement(CheckboxInput, _extends({
5114 type: "checkbox"
5115 }, checkboxProps)),
5116 /*#__PURE__*/
5117 React__default.createElement(Display, {
5118 className: "es-checkbox__fill"
5119 })),
5120 /*#__PURE__*/
5121 React__default.createElement(Text, {
5122 className: "es-checkbox__text",
5123 textOnHover: checkboxProps.textOnHover
5124 }, children))
5125 );
5126}
5127
5128CheckAllBox.propTypes = process.env.NODE_ENV !== "production" ? {
5129 children: PropTypes.any,
5130 textOnHover: PropTypes.bool
5131} : {};
5132CheckAllBox.defaultProps = {
5133 textOnHover: false,
5134 children: undefined
5135};
5136
5137var Spacer = styled__default.div(["margin-left:", ";"], function (props) {
5138 return props.bumpRight ? '10px' : '0';
5139});
5140
5141function CheckboxGroup(_ref) {
5142 var _context;
5143
5144 var onChange = _ref.onChange,
5145 disableAllOptions = _ref.disableAllOptions,
5146 options = _ref.options,
5147 checkAllText = _ref.checkAllText,
5148 textOnHoverCheckAll = _ref.textOnHoverCheckAll;
5149
5150 var _useState = React.useState(_mapInstanceProperty(_context = _filterInstanceProperty(options).call(options, function (o) {
5151 return o.checked;
5152 })).call(_context, function (o) {
5153 return o.value;
5154 }) || []),
5155 _useState2 = _slicedToArray(_useState, 2),
5156 selectedValues = _useState2[0],
5157 setSelectedValues = _useState2[1];
5158
5159 var _useState3 = React.useState(false),
5160 _useState4 = _slicedToArray(_useState3, 2),
5161 checkAll = _useState4[0],
5162 setCheckAll = _useState4[1];
5163
5164 var handleCheckAll = function handleCheckAll() {
5165 var updatedValues = [];
5166
5167 if (!checkAll) {
5168 updatedValues = _mapInstanceProperty(options).call(options, function (o) {
5169 return o.value;
5170 });
5171 setCheckAll(true);
5172 } else {
5173 setCheckAll(false);
5174 }
5175
5176 setSelectedValues(updatedValues);
5177 onChange(updatedValues);
5178 };
5179
5180 var handleCheckboxChange = function handleCheckboxChange(ev) {
5181 var updatedValues = [];
5182
5183 if (_includesInstanceProperty(selectedValues).call(selectedValues, ev.target.value)) {
5184 updatedValues = _filterInstanceProperty(selectedValues).call(selectedValues, function (val) {
5185 return val !== ev.target.value;
5186 });
5187 } else {
5188 var _context2;
5189
5190 updatedValues = _concatInstanceProperty(_context2 = []).call(_context2, _toConsumableArray(selectedValues), [ev.target.value]);
5191 }
5192
5193 setSelectedValues(updatedValues);
5194 onChange(updatedValues);
5195 };
5196
5197 return (
5198 /*#__PURE__*/
5199 React__default.createElement(React__default.Fragment, null, checkAllText &&
5200 /*#__PURE__*/
5201 React__default.createElement(CheckAllBox, {
5202 onChange: handleCheckAll,
5203 checked: checkAll,
5204 disabled: disableAllOptions
5205 }, checkAllText), _mapInstanceProperty(options).call(options, function (option) {
5206 return (
5207 /*#__PURE__*/
5208 React__default.createElement(Spacer, {
5209 bumpRight: Boolean(checkAllText),
5210 key: option.value
5211 },
5212 /*#__PURE__*/
5213 React__default.createElement(Checkbox, {
5214 name: option.name,
5215 value: option.value,
5216 checked: _includesInstanceProperty(selectedValues).call(selectedValues, option.value),
5217 disabled: disableAllOptions || option.disabled,
5218 onChange: handleCheckboxChange
5219 }, option.content || option.value))
5220 );
5221 }))
5222 );
5223}
5224
5225CheckboxGroup.propTypes = process.env.NODE_ENV !== "production" ? {
5226 /** change handler */
5227 onChange: PropTypes.func.isRequired,
5228
5229 /** Disable all checkbox buttons */
5230 disableAllOptions: PropTypes.bool,
5231
5232 /** array of checkbox objects defined by this shape */
5233 options: PropTypes.arrayOf(PropTypes.shape({
5234 name: PropTypes.string,
5235 value: PropTypes.string.isRequired,
5236 content: PropTypes.any,
5237 checked: PropTypes.bool,
5238 disabled: PropTypes.bool
5239 })),
5240
5241 /** display an optional "Check All" checkbox with this value */
5242 checkAllText: PropTypes.string,
5243
5244 /** display the "Check All" text on hover */
5245 textOnHoverCheckAll: PropTypes.bool
5246} : {};
5247CheckboxGroup.defaultProps = {
5248 checkAllText: undefined,
5249 textOnHoverCheckAll: false,
5250 disableAllOptions: false,
5251 options: []
5252};
5253
5254var Directions = {
5255 'top': 'column-reverse',
5256 'bottom': 'column',
5257 'right': 'row',
5258 'left': 'row-reverse'
5259};
5260var Padding = {
5261 'top': '0 0 0.5rem',
5262 'bottom': '2.25rem 0 0',
5263 'right': '0 0 0.5rem',
5264 'left': '0 1rem 0 0'
5265};
5266var primary = "#0073b6";
5267var primaryLight = "#ededed";
5268var success = "#298544";
5269var successLight = "#69aa7c";
5270var warning = "#c25400";
5271var warningLight = "#d4874d";
5272var danger = "#cc0000";
5273var dangerLight = "#db4d4d";
5274
5275function Type(type, light) {
5276 switch (type) {
5277 case "primary":
5278 return light ? primaryLight : primary;
5279
5280 case "success":
5281 return light ? successLight : success;
5282
5283 case "warning":
5284 return light ? warningLight : warning;
5285
5286 case "danger":
5287 return light ? dangerLight : danger;
5288
5289 default:
5290 return light ? primaryLight : primary;
5291 }
5292}
5293
5294var SwitchBase = styled__default.div(["margin:0 auto 10px;display:flex;"]);
5295var SwitchLabel = styled__default.label(["flex-direction:", ";text-align:", ";justify-content:", ";cursor:", ";display:flex;position:relative:padding:5px 0;transition:all .25s linear;&:hover{span{&::before{box-shadow:", ";}}input[type=\"checkbox\"]:checked ~ span::before{box-shadow:", ";}}"], function (props) {
5296 return Directions[props.direction];
5297}, function (props) {
5298 return props.direction === 'top' || props.direction === 'bottom' ? 'center' : 'left';
5299}, function (props) {
5300 return props.direction === 'left' ? 'flex-end' : 'normal';
5301}, function (props) {
5302 return props.isDisabled ? 'not-allowed' : 'pointer';
5303}, function (props) {
5304 return props.isDisabled ? '0' : 'inset 0 3px 3px rgba(0,0,0,0.4)';
5305}, function (props) {
5306 return props.isDisabled ? '0' : 'inset 0 3px 3px rgba(0,0,0,0.7)';
5307});
5308var SwitchInput = styled__default.input(["overflow:visible;margin:0;font-family:inherit;font-size:inherit;line-height:inherit;position:absolute;clip:rect(0,0,0,0);pointer-events:none;box-sizing:border-box;padding:0;&:focus ~ span::after{box-shadow:0 0 3px 3px #83bffc;}&:checked ~ span{&::before{background:", ";}&::after{background:#f4f4f4;left:28px;}}"], function (props) {
5309 return Type(props.styleType, false);
5310});
5311var SwitchLabelText = styled__default.span(["padding:", ";flex-grow:1;color:", ";"], function (props) {
5312 return Padding[props.direction];
5313}, function (props) {
5314 return props.type === 'primary' ? '#000' : Type(props.type, false);
5315});
5316var SwitchCheck = styled__default.span(["order:-2;position:relative;width:64px;&::before{background:", ";border-radius:11px;content:\"\";display:block;height:25px;left:3px;outline:none;position:absolute;top:.2rem;width:54px;z-index:5;transition:background-color .25s linear,border .25s linear,box-shadow .25s linear;}&::after{background:#f4f4f4;box-shadow:0 2px 6px #444;display:block;position:absolute;content:\"\";border-radius:100%;height:30px;width:30px;top:0;left:0;transform:all .18s linear;z-index:7;}"], function (props) {
5317 return Type(props.type, true);
5318});
5319var SwitchOffText = styled__default.span(["order:", ";padding:", ";;vertical-align:middle;"], function (props) {
5320 return props.direction === 'left' || props.direction === 'top' ? '-1' : '-3';
5321}, function (props) {
5322 return props.offText === '' ? '0' : '0 1rem 0 1rem';
5323});
5324var SwitchOnText = styled__default.span(["order:", ";padding:", ";vertical-align:middle;"], function (props) {
5325 return props.direction === 'left' || props.direction === 'top' ? '-3' : '-1';
5326}, function (props) {
5327 return props.onText === '' ? '0' : '0 1rem 0 0.75rem';
5328});
5329
5330function Switch(_ref) {
5331 var type = _ref.type,
5332 label = _ref.label,
5333 direction = _ref.direction,
5334 ariaLabel = _ref.ariaLabel,
5335 onText = _ref.onText,
5336 offText = _ref.offText,
5337 checked = _ref.checked,
5338 onChange = _ref.onChange,
5339 disabled = _ref.disabled,
5340 switchProps = _objectWithoutProperties(_ref, ["type", "label", "direction", "ariaLabel", "onText", "offText", "checked", "onChange", "disabled"]);
5341
5342 var _useState = React.useState(checked),
5343 _useState2 = _slicedToArray(_useState, 2),
5344 isToggled = _useState2[0],
5345 setIsToggled = _useState2[1];
5346
5347 function handleToggle(event) {
5348 setIsToggled(!isToggled);
5349 onChange(event);
5350 }
5351
5352 return (
5353 /*#__PURE__*/
5354 React__default.createElement(SwitchBase, _extends({
5355 type: type
5356 }, switchProps),
5357 /*#__PURE__*/
5358 React__default.createElement(SwitchLabel, {
5359 isDisabled: disabled,
5360 direction: direction,
5361 onChange: handleToggle
5362 },
5363 /*#__PURE__*/
5364 React__default.createElement(SwitchInput, {
5365 disabled: disabled,
5366 styleType: type,
5367 type: "checkbox",
5368 checked: isToggled,
5369 "aria-label": ariaLabel
5370 }),
5371 /*#__PURE__*/
5372 React__default.createElement(SwitchLabelText, {
5373 direction: direction,
5374 type: type
5375 }, label),
5376 /*#__PURE__*/
5377 React__default.createElement(SwitchOffText, {
5378 direction: direction,
5379 offText: offText
5380 }, offText),
5381 /*#__PURE__*/
5382 React__default.createElement(SwitchCheck, {
5383 type: type
5384 }),
5385 /*#__PURE__*/
5386 React__default.createElement(SwitchOnText, {
5387 direction: direction,
5388 onText: onText
5389 }, onText)))
5390 );
5391}
5392
5393Switch.propTypes = process.env.NODE_ENV !== "production" ? {
5394 /** The type attribute for the switch */
5395 type: PropTypes.oneOf(['primary', 'success', 'warning', 'danger']),
5396
5397 /** The label text for the switch */
5398 label: PropTypes.string,
5399
5400 /** The location of the label */
5401 direction: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
5402
5403 /** Accessibility label for the checkbox */
5404 ariaLabel: PropTypes.string,
5405
5406 /** This text goes on the right of the switch, denoting the 'on' position */
5407 onText: PropTypes.string,
5408
5409 /** This text goes on the left of the switch, denoting the 'off' position */
5410 offText: PropTypes.string,
5411
5412 /** Initial state of the toggle switch */
5413 checked: PropTypes.bool,
5414
5415 /** Function for what happens when the switch is toggled */
5416 onChange: PropTypes.func,
5417
5418 /** Determines whether the switch is disabled */
5419 disabled: PropTypes.bool
5420} : {};
5421Switch.defaultProps = {
5422 type: 'primary',
5423 label: '',
5424 direction: 'right',
5425 ariaLabel: '',
5426 onText: '',
5427 offText: '',
5428 checked: false,
5429 onChange: _noop,
5430 disabled: false
5431};
5432
5433var StyledAnchor = styled__default.a(["background-color:transparent;box-sizing:border-box;color:", ";text-decoration:underline;&:hover{color:", ";text-decoration:none;}"], function (props) {
5434 return props.theme.colors.primary;
5435}, function (props) {
5436 return props.theme.colors.primaryHover;
5437});
5438
5439function Anchor(_ref) {
5440 var props = _Object$assign({}, _ref);
5441
5442 return (
5443 /*#__PURE__*/
5444 React__default.createElement(StyledAnchor, props)
5445 );
5446}
5447
5448var VerticalNavigation = styled__default.nav(["background-color:", ";box-shadow:2px 2px 5px ", ";ul{list-style:none;margin:0;padding:0;}"], function (props) {
5449 return props.theme.colors.white;
5450}, function (props) {
5451 return props.theme.colors.gray6;
5452});
5453var HorizontalNavigation = styled__default.nav(["background-color:", ";ul{display:flex;list-style:none;margin:0;padding:0;}"], function (props) {
5454 return props.theme.colors.white;
5455});
5456function useNavigation(orientation) {
5457 var OrientedNavigation = orientation === 'horizontal' ? HorizontalNavigation : VerticalNavigation;
5458
5459 function Navigation(props) {
5460 var _context;
5461
5462 var useAltStyle = props.useAltStyle,
5463 children = props.children;
5464
5465 var _React$useState = React__default.useState(props.selected),
5466 _React$useState2 = _slicedToArray(_React$useState, 2),
5467 selected = _React$useState2[0],
5468 setSelected = _React$useState2[1];
5469
5470 React__default.useEffect(function () {
5471 setSelected(props.selected);
5472 }, [props.selected]);
5473 return (
5474 /*#__PURE__*/
5475 React__default.createElement(OrientedNavigation, {
5476 className: "es-sidenav"
5477 },
5478 /*#__PURE__*/
5479 React__default.createElement("ul", null, _mapInstanceProperty(_context = React__default.Children).call(_context, children, function (child) {
5480 return (
5481 /*#__PURE__*/
5482 React__default.cloneElement(child, {
5483 useAltStyle: useAltStyle,
5484 highlightedId: selected
5485 })
5486 );
5487 })))
5488 );
5489 }
5490
5491 Navigation.propTypes = process.env.NODE_ENV !== "production" ? {
5492 /** Use the alternate nav style */
5493 useAltStyle: PropTypes.bool,
5494 children: PropTypes.node.isRequired,
5495
5496 /** Set the selected nav item by id, controlled mode */
5497 selected: PropTypes.string
5498 } : {};
5499 Navigation.defaultProps = {
5500 useAltStyle: false,
5501 selected: undefined
5502 };
5503 return Navigation;
5504}
5505
5506var NavItemWrapper = styled__default.li(["background-color:", ";color:", ";cursor:pointer;line-height:", ";min-width:75px;padding:0;&:hover{background-color:", ";color:", ";> i{color:", ";}}", " ", ";"], function (props) {
5507 return props.theme.colors.white;
5508}, function (props) {
5509 return props.theme.colors.black;
5510}, function (props) {
5511 return props.theme.font.baseLineHeight;
5512}, function (props) {
5513 return props.theme.colors.gray2;
5514}, function (props) {
5515 return props.theme.colors.primary;
5516}, function (props) {
5517 return props.theme.colors.primary;
5518}, function (props) {
5519 return props.isActive && styled.css(["background-color:", ";color:", ";&:hover{background-color:", ";color:", ";> i{color:", ";}}"], props.theme.colors.primary, props.theme.colors.white, props.theme.colors.primary, props.theme.colors.white, props.theme.colors.white);
5520}, function (props) {
5521 return props.isDisabled && styled.css(["background-color:", ";color:", ";cursor:not-allowed;> span{pointer-events:none;}> i{color:", ";}&:hover{background-color:", ";color:", ";> i{color:", ";}}"], props.theme.colors.gray1, props.theme.colors.gray6, props.theme.colors.gray1, props.theme.colors.gray1, props.theme.colors.gray6, props.theme.colors.gray1);
5522});
5523var AltNavItemWrapper = styled__default(NavItemWrapper)(["border-bottom:", " ", ";padding-left:", ";&:hover{border-", ":4px solid ", ";padding-left:0;}", " ", ";"], function (props) {
5524 return props.isVertical ? 'none' : '2px solid';
5525}, function (props) {
5526 return props.theme.colors.gray5;
5527}, function (props) {
5528 return props.isVertical ? '4px' : '0';
5529}, function (props) {
5530 return props.isVertical ? 'left' : 'bottom';
5531}, function (props) {
5532 return props.theme.colors.primary;
5533}, function (props) {
5534 return props.isActive && styled.css(["background-color:", ";border-", ":4px solid ", ";color:", ";padding-left:0;> i{color:", ";}&:hover{background-color:", ";border-", ":4px solid ", ";color:", ";> i{color:", ";}}"], props.theme.colors.gray1, props.isVertical ? 'left' : 'bottom', props.theme.brandColors.primary3, props.theme.colors.black, props.theme.brandColors.primary3, props.theme.colors.gray1, props.isVertical ? 'left' : 'bottom', props.theme.brandColors.primary3, props.theme.colors.black, props.theme.brandColors.primary3);
5535}, function (props) {
5536 return props.isDisabled && styled.css(["padding-left:0;&:hover{border-left:none;}"]);
5537});
5538var NavIcon = styled__default(Icon)(["align-self:flex-end;"]);
5539var NavigationAnchor = styled__default.a(["align-content:center;background-color:transparent;box-sizing:border-box;border:0;color:inherit;cursor:inherit;display:flex;font-size:inherit;height:100%;padding:10px;text-decoration:none;width:100%;"]);
5540function useNavigationItem(orientation) {
5541 function NavItem(props) {
5542 var highlightedId = props.highlightedId,
5543 id = props.id,
5544 isDisabled = props.isDisabled,
5545 useAltStyle = props.useAltStyle,
5546 children = props.children;
5547 var isActive = id === highlightedId;
5548 var Wrapper = useAltStyle ? AltNavItemWrapper : NavItemWrapper;
5549 var isVertical = orientation === 'vertical';
5550 var child = React__default.Children.only(children);
5551
5552 var _child$props = child.props,
5553 grandChildren = _child$props.children,
5554 rest = _objectWithoutProperties(_child$props, ["children"]);
5555
5556 var styledChild =
5557 /*#__PURE__*/
5558 React__default.createElement(NavigationAnchor, _extends({
5559 as: child.type,
5560 style: {
5561 justifyContent: isVertical ? 'space-between' : 'center'
5562 }
5563 }, rest),
5564 /*#__PURE__*/
5565 React__default.createElement("span", null, grandChildren), isVertical ?
5566 /*#__PURE__*/
5567 React__default.createElement(NavIcon, {
5568 name: "chevron-right"
5569 }) : null);
5570 return (
5571 /*#__PURE__*/
5572 React__default.createElement(Wrapper, {
5573 className: "es-sidenav__navitem",
5574 isActive: isActive,
5575 isDisabled: isDisabled,
5576 isVertical: isVertical
5577 }, styledChild)
5578 );
5579 }
5580
5581 NavItem.propTypes = process.env.NODE_ENV !== "production" ? {
5582 /** @ignore */
5583 useAltStyle: PropTypes.bool,
5584
5585 /** Item content */
5586 children: PropTypes.any,
5587
5588 /** @ignore */
5589 highlightedId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
5590
5591 /** Each item must have a unique identifier */
5592 id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
5593
5594 /** Disable the nav item to render it un-clickable */
5595 isDisabled: PropTypes.bool
5596 } : {};
5597 NavItem.defaultProps = {
5598 useAltStyle: false,
5599 isDisabled: false,
5600 children: undefined,
5601 highlightedId: undefined
5602 };
5603 return NavItem;
5604}
5605
5606var Navigation = useNavigation('vertical');
5607
5608function SideNav(props) {
5609 return (
5610 /*#__PURE__*/
5611 React__default.createElement(Navigation, props)
5612 );
5613}
5614
5615SideNav.Item = useNavigationItem('vertical');
5616
5617var Navigation$1 = useNavigation('horizontal');
5618
5619function HorizontalNav(props) {
5620 return (
5621 /*#__PURE__*/
5622 React__default.createElement(Navigation$1, props)
5623 );
5624}
5625
5626HorizontalNav.Item = useNavigationItem('horizontal');
5627
5628function useWindowWidth() {
5629 var getMediaWidth = function getMediaWidth() {
5630 return (// https://stackoverflow.com/a/6850319
5631 window.innerWidth > 0 ? window.innerWidth : window.screen.width
5632 );
5633 };
5634
5635 var _React$useState = React__default.useState(getMediaWidth()),
5636 _React$useState2 = _slicedToArray(_React$useState, 2),
5637 width = _React$useState2[0],
5638 setWidth = _React$useState2[1];
5639
5640 React__default.useEffect(function () {
5641 var handleResize = function handleResize() {
5642 return setWidth(getMediaWidth());
5643 };
5644
5645 window.addEventListener('resize', handleResize);
5646 return function () {
5647 return window.removeEventListener('resize', handleResize);
5648 };
5649 }, []);
5650 return width;
5651}
5652
5653function _templateObject$2() {
5654 var data = _taggedTemplateLiteral(["\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle,\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle,\n .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view--down-arrow {\n margin-left: -8px;\n position: absolute;\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle,\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle,\n .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-year-read-view--down-arrow,\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle::before,\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle::before,\n .react-datepicker__year-read-view--down-arrow::before,\n .react-datepicker__month-read-view--down-arrow::before,\n .react-datepicker__month-year-read-view--down-arrow::before {\n box-sizing: content-box;\n position: absolute;\n border: 8px solid transparent;\n height: 0;\n width: 1px;\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle::before,\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle::before,\n .react-datepicker__year-read-view--down-arrow::before,\n .react-datepicker__month-read-view--down-arrow::before,\n .react-datepicker__month-year-read-view--down-arrow::before {\n content: \"\";\n z-index: -1;\n border-width: 8px;\n left: -8px;\n border-bottom-color: ", ";\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle {\n top: 0;\n margin-top: -8px;\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle,\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle::before {\n border-top: none;\n border-bottom-color: ", ";\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle::before {\n top: -1px;\n border-bottom-color: ", ";\n }\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle,\n .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-year-read-view--down-arrow {\n bottom: 1px;\n margin-bottom: -8px;\n }\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle,\n .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-year-read-view--down-arrow,\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle::before,\n .react-datepicker__year-read-view--down-arrow::before,\n .react-datepicker__month-read-view--down-arrow::before,\n .react-datepicker__month-year-read-view--down-arrow::before {\n border-bottom: none;\n border-top-color: ", ";\n }\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle::before,\n .react-datepicker__year-read-view--down-arrow::before,\n .react-datepicker__month-read-view--down-arrow::before,\n .react-datepicker__month-year-read-view--down-arrow::before {\n bottom: -1px;\n border-top-color: ", ";\n }\n .react-datepicker-wrapper {\n display: inline-block;\n }\n .react-datepicker {\n font-size: 18px;\n background-color: ", ";\n border: solid 1px ", ";\n border-radius: 4px;\n color: ", ";\n box-shadow: 0 5px 10px ", ";\n display: inline-block;\n position: relative;\n }\n .react-datepicker--time-only .react-datepicker__triangle {\n left: 35px;\n }\n .react-datepicker--time-only .react-datepicker__time-container {\n border-left: 0;\n }\n .react-datepicker--time-only .react-datepicker__time {\n border-radius: 0.3rem;\n }\n .react-datepicker--time-only .react-datepicker__time-box {\n border-radius: 0.3rem;\n }\n .react-datepicker__triangle {\n position: absolute;\n left: 50px;\n }\n .react-datepicker-popper {\n z-index: 1060;\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] {\n margin-top: 12px;\n }\n .react-datepicker-popper[data-placement^=\"top\"] {\n margin-bottom: 6px;\n }\n .react-datepicker-popper[data-placement^=\"right\"] {\n margin-left: 8px;\n }\n .react-datepicker-popper[data-placement^=\"right\"] .react-datepicker__triangle {\n left: auto;\n right: 42px;\n }\n .react-datepicker-popper[data-placement^=\"left\"] {\n margin-right: 8px;\n }\n .react-datepicker-popper[data-placement^=\"left\"] .react-datepicker__triangle {\n left: 42px;\n right: auto;\n }\n .react-datepicker__header {\n text-align: center;\n background-color: ", ";\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n padding-top: 10px;\n position: relative;\n }\n .react-datepicker__header--time {\n padding-bottom: 8px;\n padding-left: 5px;\n padding-right: 5px;\n }\n .react-datepicker__year-dropdown-container--select,\n .react-datepicker__month-dropdown-container--select,\n .react-datepicker__month-year-dropdown-container--select,\n .react-datepicker__year-dropdown-container--scroll,\n .react-datepicker__month-dropdown-container--scroll,\n .react-datepicker__month-year-dropdown-container--scroll {\n display: inline-block;\n margin: 0 2px;\n }\n .react-datepicker__current-month,\n .react-datepicker-time__header {\n margin-top: 0;\n color: ", ";\n font-weight: bold;\n font-size: 18px;\n }\n .react-datepicker-time__header {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n .react-datepicker__navigation {\n background-color: transparent;\n line-height: 1.7rem;\n text-align: center;\n cursor: pointer;\n position: absolute;\n top: 10px;\n padding: 0;\n height: 10px;\n width: 0;\n border: 0.45rem solid transparent;\n z-index: 1;\n text-indent: -999em;\n overflow: hidden;\n }\n .react-datepicker__navigation--previous {\n left: 10px;\n border-right-color: ", ";\n }\n .react-datepicker__navigation--previous:hover {\n border-right-color: ", ";\n }\n .react-datepicker__navigation--previous--disabled,\n .react-datepicker__navigation--previous--disabled:hover {\n border-right-color: ", ";\n cursor: default;\n }\n .react-datepicker__navigation--next {\n right: 10px;\n border-left-color: ", ";\n }\n .react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button) {\n right: 110px;\n }\n .react-datepicker__navigation--next:hover {\n border-left-color: ", ";\n }\n .react-datepicker__navigation--next--disabled,\n .react-datepicker__navigation--next--disabled:hover {\n border-left-color: ", ";\n cursor: default;\n }\n .react-datepicker__navigation--years {\n position: relative;\n top: 0;\n display: block;\n margin-left: auto;\n margin-right: auto;\n }\n .react-datepicker__navigation--years-previous {\n top: 4px;\n border-top-color: ", ";\n }\n .react-datepicker__navigation--years-previous:hover {\n border-top-color: ", ";\n }\n .react-datepicker__navigation--years-upcoming {\n top: -4px;\n border-bottom-color: ", ";\n }\n .react-datepicker__navigation--years-upcoming:hover {\n border-bottom-color: ", ";\n }\n .react-datepicker__month-container {\n float: left;\n }\n .react-datepicker__month {\n margin: 0.4rem;\n text-align: center;\n }\n .react-datepicker__time-container {\n float: right;\n border-left: 1px solid ", ";\n }\n .react-datepicker__time-container--with-today-button {\n display: inline;\n border: 1px solid ", ";\n border-radius: 0.3rem;\n position: absolute;\n right: -72px;\n top: 0;\n }\n .react-datepicker__time-container .react-datepicker__time {\n font-size: 14px;\n position: relative;\n background: white;\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box {\n width: 102px;\n overflow-x: hidden;\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list {\n list-style: none;\n margin: 0;\n height: 204px;\n overflow-y: scroll;\n padding: 0;\n width: 100%;\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item {\n padding: 5px 10px;\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover {\n cursor: pointer;\n background-color: ", ";\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected {\n background-color: ", ";\n color: white;\n font-weight: bold;\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover {\n background-color: ", ";\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled {\n color: ", ";\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover {\n cursor: default;\n background-color: transparent;\n }\n .react-datepicker__week-number {\n color: ", ";\n display: inline-block;\n width: 1.7rem;\n line-height: 1.7rem;\n text-align: center;\n margin: 0.166rem;\n }\n .react-datepicker__week-number.react-datepicker__week-number--clickable {\n cursor: pointer;\n }\n .react-datepicker__week-number.react-datepicker__week-number--clickable:hover {\n border-radius: 0.3rem;\n background-color: ", ";\n }\n .react-datepicker__day-names,\n .react-datepicker__week {\n white-space: nowrap;\n }\n .react-datepicker__day-names {\n font-weight: bold;\n }\n .react-datepicker__day-names .react-datepicker__day-name {\n color: ", ";\n }\n .react-datepicker__day-name,\n .react-datepicker__day,\n .react-datepicker__time-name {\n color: ", ";\n display: inline-block;\n width: 1.9rem;\n line-height: 1.9rem;\n text-align: center;\n margin: 0.2rem;\n }\n .react-datepicker__day {\n cursor: pointer;\n }\n .react-datepicker__day:hover {\n border-radius: 0.3rem;\n background-color: ", ";\n }\n .react-datepicker__day--today {\n font-weight: bold;\n }\n .react-datepicker__day--highlighted {\n border-radius: 0.3rem;\n background-color: ", ";\n color: ", ";\n }\n .react-datepicker__day--highlighted:hover {\n background-color: ", ";\n color: ", "\n }\n .react-datepicker__day--selected,\n .react-datepicker__day--in-selecting-range,\n .react-datepicker__day--in-range {\n border-radius: 0.3rem;\n background-color: ", ";\n color: ", ";\n }\n .react-datepicker__day--selected:hover,\n .react-datepicker__day--in-selecting-range:hover,\n .react-datepicker__day--in-range:hover {\n background-color: ", ";\n }\n .react-datepicker__day--keyboard-selected {\n border-radius: 0.3rem;\n background-color: ", ";\n color: ", ";\n }\n .react-datepicker__day--keyboard-selected:hover {\n background-color: ", ";\n }\n .react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range) {\n background-color: ", ";\n color: ", ";\n }\n .react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range) {\n background-color: ", ";\n color: ", ";\n }\n .react-datepicker__day--disabled {\n cursor: default;\n color: ", ";\n }\n .react-datepicker__day--disabled:hover {\n background-color: transparent;\n }\n .react-datepicker__input-container {\n position: relative;\n display: inline-block;\n }\n .react-datepicker__year-read-view,\n .react-datepicker__month-read-view,\n .react-datepicker__month-year-read-view {\n border: 1px solid transparent;\n color: ", ";\n }\n .react-datepicker__year-read-view:hover,\n .react-datepicker__month-read-view:hover,\n .react-datepicker__month-year-read-view:hover {\n cursor: pointer;\n }\n .react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow {\n border-top-color: ", ";\n }\n .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-year-read-view--down-arrow {\n border-top-color: ", ";\n float: right;\n margin-left: 20px;\n top: 5px;\n position: relative;\n border-width: 0.45rem;\n }\n .react-datepicker__year-dropdown,\n .react-datepicker__month-dropdown,\n .react-datepicker__month-year-dropdown {\n background-color: ", ";\n position: absolute;\n width: 50%;\n left: 25%;\n top: 30px;\n z-index: 1;\n text-align: center;\n border-radius: 0.3rem;\n border: 1px solid ", ";\n }\n .react-datepicker__year-dropdown:hover,\n .react-datepicker__month-dropdown:hover,\n .react-datepicker__month-year-dropdown:hover {\n cursor: pointer;\n }\n .react-datepicker__year-dropdown--scrollable,\n .react-datepicker__month-dropdown--scrollable,\n .react-datepicker__month-year-dropdown--scrollable {\n height: 150px;\n overflow-y: scroll;\n }\n .react-datepicker__year-option,\n .react-datepicker__month-option,\n .react-datepicker__month-year-option {\n line-height: 20px;\n width: 100%;\n display: block;\n margin-left: auto;\n margin-right: auto;\n }\n .react-datepicker__year-option:first-of-type,\n .react-datepicker__month-option:first-of-type,\n .react-datepicker__month-year-option:first-of-type {\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n }\n .react-datepicker__year-option:last-of-type,\n .react-datepicker__month-option:last-of-type,\n .react-datepicker__month-year-option:last-of-type {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border-bottom-left-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n }\n .react-datepicker__year-option:hover,\n .react-datepicker__month-option:hover,\n .react-datepicker__month-year-option:hover {\n background-color: ", ";\n }\n .react-datepicker__year-option--selected,\n .react-datepicker__month-option--selected,\n .react-datepicker__month-year-option--selected {\n position: absolute;\n left: 15px;\n }\n .react-datepicker__close-icon {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n display: inline-block;\n height: 0;\n outline: 0;\n padding: 0;\n vertical-align: middle;\n }\n .react-datepicker__close-icon::after {\n background-color: ", ";\n border-radius: 50%;\n bottom: 0;\n box-sizing: border-box;\n color: ", void 0, ";\n border-top: 1px solid ", ";\n cursor: pointer;\n text-align: center;\n font-weight: bold;\n padding: 5px 0;\n clear: left;\n }\n .react-datepicker__portal {\n position: fixed;\n width: 100vw;\n height: 100vh;\n background-color: ", ";\n left: 0;\n top: 0;\n justify-content: center;\n align-items: center;\n display: flex;\n z-index: 2147483647;\n }\n .react-datepicker__portal .react-datepicker__day-name,\n .react-datepicker__portal .react-datepicker__day,\n .react-datepicker__portal .react-datepicker__time-name {\n width: 3rem;\n line-height: 3rem;\n }\n @media (max-width: 400px),\n (max-height: 550px) {\n .react-datepicker__portal .react-datepicker__day-name,\n .react-datepicker__portal .react-datepicker__day,\n .react-datepicker__portal .react-datepicker__time-name {\n width: 2rem;\n line-height: 2rem;\n }\n }\n .react-datepicker__portal .react-datepicker__current-month,\n .react-datepicker__portal .react-datepicker-time__header {\n font-size: 1.44rem;\n }\n .react-datepicker__portal .react-datepicker__navigation {\n border: 0.81rem solid transparent;\n }\n .react-datepicker__portal .react-datepicker__navigation--previous {\n border-right-color: ", ";\n }\n .react-datepicker__portal .react-datepicker__navigation--previous:hover {\n border-right-color: ", ";\n }\n .react-datepicker__portal .react-datepicker__navigation--previous--disabled,\n .react-datepicker__portal .react-datepicker__navigation--previous--disabled:hover {\n border-right-color: ", ";\n cursor: default;\n }\n .react-datepicker__portal .react-datepicker__navigation--next {\n border-left-color: ", ";\n }\n .react-datepicker__portal .react-datepicker__navigation--next:hover {\n border-left-color: ", ";\n }\n .react-datepicker__portal .react-datepicker__navigation--next--disabled,\n .react-datepicker__portal .react-datepicker__navigation--next--disabled:hover {\n border-left-color: ", ";\n cursor: default;\n }\n"], ["\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle,\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle,\n .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view--down-arrow {\n margin-left: -8px;\n position: absolute;\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle,\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle,\n .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-year-read-view--down-arrow,\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle::before,\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle::before,\n .react-datepicker__year-read-view--down-arrow::before,\n .react-datepicker__month-read-view--down-arrow::before,\n .react-datepicker__month-year-read-view--down-arrow::before {\n box-sizing: content-box;\n position: absolute;\n border: 8px solid transparent;\n height: 0;\n width: 1px;\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle::before,\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle::before,\n .react-datepicker__year-read-view--down-arrow::before,\n .react-datepicker__month-read-view--down-arrow::before,\n .react-datepicker__month-year-read-view--down-arrow::before {\n content: \"\";\n z-index: -1;\n border-width: 8px;\n left: -8px;\n border-bottom-color: ", ";\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle {\n top: 0;\n margin-top: -8px;\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle,\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle::before {\n border-top: none;\n border-bottom-color: ", ";\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] .react-datepicker__triangle::before {\n top: -1px;\n border-bottom-color: ", ";\n }\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle,\n .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-year-read-view--down-arrow {\n bottom: 1px;\n margin-bottom: -8px;\n }\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle,\n .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-year-read-view--down-arrow,\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle::before,\n .react-datepicker__year-read-view--down-arrow::before,\n .react-datepicker__month-read-view--down-arrow::before,\n .react-datepicker__month-year-read-view--down-arrow::before {\n border-bottom: none;\n border-top-color: ", ";\n }\n .react-datepicker-popper[data-placement^=\"top\"] .react-datepicker__triangle::before,\n .react-datepicker__year-read-view--down-arrow::before,\n .react-datepicker__month-read-view--down-arrow::before,\n .react-datepicker__month-year-read-view--down-arrow::before {\n bottom: -1px;\n border-top-color: ", ";\n }\n .react-datepicker-wrapper {\n display: inline-block;\n }\n .react-datepicker {\n font-size: 18px;\n background-color: ", ";\n border: solid 1px ", ";\n border-radius: 4px;\n color: ", ";\n box-shadow: 0 5px 10px ", ";\n display: inline-block;\n position: relative;\n }\n .react-datepicker--time-only .react-datepicker__triangle {\n left: 35px;\n }\n .react-datepicker--time-only .react-datepicker__time-container {\n border-left: 0;\n }\n .react-datepicker--time-only .react-datepicker__time {\n border-radius: 0.3rem;\n }\n .react-datepicker--time-only .react-datepicker__time-box {\n border-radius: 0.3rem;\n }\n .react-datepicker__triangle {\n position: absolute;\n left: 50px;\n }\n .react-datepicker-popper {\n z-index: 1060;\n }\n .react-datepicker-popper[data-placement^=\"bottom\"] {\n margin-top: 12px;\n }\n .react-datepicker-popper[data-placement^=\"top\"] {\n margin-bottom: 6px;\n }\n .react-datepicker-popper[data-placement^=\"right\"] {\n margin-left: 8px;\n }\n .react-datepicker-popper[data-placement^=\"right\"] .react-datepicker__triangle {\n left: auto;\n right: 42px;\n }\n .react-datepicker-popper[data-placement^=\"left\"] {\n margin-right: 8px;\n }\n .react-datepicker-popper[data-placement^=\"left\"] .react-datepicker__triangle {\n left: 42px;\n right: auto;\n }\n .react-datepicker__header {\n text-align: center;\n background-color: ", ";\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n padding-top: 10px;\n position: relative;\n }\n .react-datepicker__header--time {\n padding-bottom: 8px;\n padding-left: 5px;\n padding-right: 5px;\n }\n .react-datepicker__year-dropdown-container--select,\n .react-datepicker__month-dropdown-container--select,\n .react-datepicker__month-year-dropdown-container--select,\n .react-datepicker__year-dropdown-container--scroll,\n .react-datepicker__month-dropdown-container--scroll,\n .react-datepicker__month-year-dropdown-container--scroll {\n display: inline-block;\n margin: 0 2px;\n }\n .react-datepicker__current-month,\n .react-datepicker-time__header {\n margin-top: 0;\n color: ", ";\n font-weight: bold;\n font-size: 18px;\n }\n .react-datepicker-time__header {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n .react-datepicker__navigation {\n background-color: transparent;\n line-height: 1.7rem;\n text-align: center;\n cursor: pointer;\n position: absolute;\n top: 10px;\n padding: 0;\n height: 10px;\n width: 0;\n border: 0.45rem solid transparent;\n z-index: 1;\n text-indent: -999em;\n overflow: hidden;\n }\n .react-datepicker__navigation--previous {\n left: 10px;\n border-right-color: ", ";\n }\n .react-datepicker__navigation--previous:hover {\n border-right-color: ", ";\n }\n .react-datepicker__navigation--previous--disabled,\n .react-datepicker__navigation--previous--disabled:hover {\n border-right-color: ", ";\n cursor: default;\n }\n .react-datepicker__navigation--next {\n right: 10px;\n border-left-color: ", ";\n }\n .react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button) {\n right: 110px;\n }\n .react-datepicker__navigation--next:hover {\n border-left-color: ", ";\n }\n .react-datepicker__navigation--next--disabled,\n .react-datepicker__navigation--next--disabled:hover {\n border-left-color: ", ";\n cursor: default;\n }\n .react-datepicker__navigation--years {\n position: relative;\n top: 0;\n display: block;\n margin-left: auto;\n margin-right: auto;\n }\n .react-datepicker__navigation--years-previous {\n top: 4px;\n border-top-color: ", ";\n }\n .react-datepicker__navigation--years-previous:hover {\n border-top-color: ", ";\n }\n .react-datepicker__navigation--years-upcoming {\n top: -4px;\n border-bottom-color: ", ";\n }\n .react-datepicker__navigation--years-upcoming:hover {\n border-bottom-color: ", ";\n }\n .react-datepicker__month-container {\n float: left;\n }\n .react-datepicker__month {\n margin: 0.4rem;\n text-align: center;\n }\n .react-datepicker__time-container {\n float: right;\n border-left: 1px solid ", ";\n }\n .react-datepicker__time-container--with-today-button {\n display: inline;\n border: 1px solid ", ";\n border-radius: 0.3rem;\n position: absolute;\n right: -72px;\n top: 0;\n }\n .react-datepicker__time-container .react-datepicker__time {\n font-size: 14px;\n position: relative;\n background: white;\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box {\n width: 102px;\n overflow-x: hidden;\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list {\n list-style: none;\n margin: 0;\n height: 204px;\n overflow-y: scroll;\n padding: 0;\n width: 100%;\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item {\n padding: 5px 10px;\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover {\n cursor: pointer;\n background-color: ", ";\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected {\n background-color: ", ";\n color: white;\n font-weight: bold;\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover {\n background-color: ", ";\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled {\n color: ", ";\n }\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover {\n cursor: default;\n background-color: transparent;\n }\n .react-datepicker__week-number {\n color: ", ";\n display: inline-block;\n width: 1.7rem;\n line-height: 1.7rem;\n text-align: center;\n margin: 0.166rem;\n }\n .react-datepicker__week-number.react-datepicker__week-number--clickable {\n cursor: pointer;\n }\n .react-datepicker__week-number.react-datepicker__week-number--clickable:hover {\n border-radius: 0.3rem;\n background-color: ", ";\n }\n .react-datepicker__day-names,\n .react-datepicker__week {\n white-space: nowrap;\n }\n .react-datepicker__day-names {\n font-weight: bold;\n }\n .react-datepicker__day-names .react-datepicker__day-name {\n color: ", ";\n }\n .react-datepicker__day-name,\n .react-datepicker__day,\n .react-datepicker__time-name {\n color: ", ";\n display: inline-block;\n width: 1.9rem;\n line-height: 1.9rem;\n text-align: center;\n margin: 0.2rem;\n }\n .react-datepicker__day {\n cursor: pointer;\n }\n .react-datepicker__day:hover {\n border-radius: 0.3rem;\n background-color: ", ";\n }\n .react-datepicker__day--today {\n font-weight: bold;\n }\n .react-datepicker__day--highlighted {\n border-radius: 0.3rem;\n background-color: ", ";\n color: ", ";\n }\n .react-datepicker__day--highlighted:hover {\n background-color: ", ";\n color: ", "\n }\n .react-datepicker__day--selected,\n .react-datepicker__day--in-selecting-range,\n .react-datepicker__day--in-range {\n border-radius: 0.3rem;\n background-color: ", ";\n color: ", ";\n }\n .react-datepicker__day--selected:hover,\n .react-datepicker__day--in-selecting-range:hover,\n .react-datepicker__day--in-range:hover {\n background-color: ", ";\n }\n .react-datepicker__day--keyboard-selected {\n border-radius: 0.3rem;\n background-color: ", ";\n color: ", ";\n }\n .react-datepicker__day--keyboard-selected:hover {\n background-color: ", ";\n }\n .react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range) {\n background-color: ", ";\n color: ", ";\n }\n .react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range) {\n background-color: ", ";\n color: ", ";\n }\n .react-datepicker__day--disabled {\n cursor: default;\n color: ", ";\n }\n .react-datepicker__day--disabled:hover {\n background-color: transparent;\n }\n .react-datepicker__input-container {\n position: relative;\n display: inline-block;\n }\n .react-datepicker__year-read-view,\n .react-datepicker__month-read-view,\n .react-datepicker__month-year-read-view {\n border: 1px solid transparent;\n color: ", ";\n }\n .react-datepicker__year-read-view:hover,\n .react-datepicker__month-read-view:hover,\n .react-datepicker__month-year-read-view:hover {\n cursor: pointer;\n }\n .react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow {\n border-top-color: ", ";\n }\n .react-datepicker__year-read-view--down-arrow,\n .react-datepicker__month-read-view--down-arrow,\n .react-datepicker__month-year-read-view--down-arrow {\n border-top-color: ", ";\n float: right;\n margin-left: 20px;\n top: 5px;\n position: relative;\n border-width: 0.45rem;\n }\n .react-datepicker__year-dropdown,\n .react-datepicker__month-dropdown,\n .react-datepicker__month-year-dropdown {\n background-color: ", ";\n position: absolute;\n width: 50%;\n left: 25%;\n top: 30px;\n z-index: 1;\n text-align: center;\n border-radius: 0.3rem;\n border: 1px solid ", ";\n }\n .react-datepicker__year-dropdown:hover,\n .react-datepicker__month-dropdown:hover,\n .react-datepicker__month-year-dropdown:hover {\n cursor: pointer;\n }\n .react-datepicker__year-dropdown--scrollable,\n .react-datepicker__month-dropdown--scrollable,\n .react-datepicker__month-year-dropdown--scrollable {\n height: 150px;\n overflow-y: scroll;\n }\n .react-datepicker__year-option,\n .react-datepicker__month-option,\n .react-datepicker__month-year-option {\n line-height: 20px;\n width: 100%;\n display: block;\n margin-left: auto;\n margin-right: auto;\n }\n .react-datepicker__year-option:first-of-type,\n .react-datepicker__month-option:first-of-type,\n .react-datepicker__month-year-option:first-of-type {\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n }\n .react-datepicker__year-option:last-of-type,\n .react-datepicker__month-option:last-of-type,\n .react-datepicker__month-year-option:last-of-type {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border-bottom-left-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n }\n .react-datepicker__year-option:hover,\n .react-datepicker__month-option:hover,\n .react-datepicker__month-year-option:hover {\n background-color: ", ";\n }\n .react-datepicker__year-option--selected,\n .react-datepicker__month-option--selected,\n .react-datepicker__month-year-option--selected {\n position: absolute;\n left: 15px;\n }\n .react-datepicker__close-icon {\n background-color: transparent;\n border: 0;\n cursor: pointer;\n display: inline-block;\n height: 0;\n outline: 0;\n padding: 0;\n vertical-align: middle;\n }\n .react-datepicker__close-icon::after {\n background-color: ", ";\n border-radius: 50%;\n bottom: 0;\n box-sizing: border-box;\n color: ", ";\n content: \"\\00d7\";\n cursor: pointer;\n font-size: 12px;\n height: 16px;\n width: 16px;\n line-height: 1;\n margin: -8px auto 0;\n padding: 2px;\n position: absolute;\n right: 7px;\n text-align: center;\n top: 50%;\n }\n .react-datepicker__today-button {\n background: ", ";\n border-top: 1px solid ", ";\n cursor: pointer;\n text-align: center;\n font-weight: bold;\n padding: 5px 0;\n clear: left;\n }\n .react-datepicker__portal {\n position: fixed;\n width: 100vw;\n height: 100vh;\n background-color: ", ";\n left: 0;\n top: 0;\n justify-content: center;\n align-items: center;\n display: flex;\n z-index: 2147483647;\n }\n .react-datepicker__portal .react-datepicker__day-name,\n .react-datepicker__portal .react-datepicker__day,\n .react-datepicker__portal .react-datepicker__time-name {\n width: 3rem;\n line-height: 3rem;\n }\n @media (max-width: 400px),\n (max-height: 550px) {\n .react-datepicker__portal .react-datepicker__day-name,\n .react-datepicker__portal .react-datepicker__day,\n .react-datepicker__portal .react-datepicker__time-name {\n width: 2rem;\n line-height: 2rem;\n }\n }\n .react-datepicker__portal .react-datepicker__current-month,\n .react-datepicker__portal .react-datepicker-time__header {\n font-size: 1.44rem;\n }\n .react-datepicker__portal .react-datepicker__navigation {\n border: 0.81rem solid transparent;\n }\n .react-datepicker__portal .react-datepicker__navigation--previous {\n border-right-color: ", ";\n }\n .react-datepicker__portal .react-datepicker__navigation--previous:hover {\n border-right-color: ", ";\n }\n .react-datepicker__portal .react-datepicker__navigation--previous--disabled,\n .react-datepicker__portal .react-datepicker__navigation--previous--disabled:hover {\n border-right-color: ", ";\n cursor: default;\n }\n .react-datepicker__portal .react-datepicker__navigation--next {\n border-left-color: ", ";\n }\n .react-datepicker__portal .react-datepicker__navigation--next:hover {\n border-left-color: ", ";\n }\n .react-datepicker__portal .react-datepicker__navigation--next--disabled,\n .react-datepicker__portal .react-datepicker__navigation--next--disabled:hover {\n border-left-color: ", ";\n cursor: default;\n }\n"]);
5655
5656 _templateObject$2 = function _templateObject() {
5657 return data;
5658 };
5659
5660 return data;
5661}
5662var DatepickerStyles = styled.createGlobalStyle(_templateObject$2(), function (_ref) {
5663 var theme = _ref.theme;
5664 return theme.colors.gray5;
5665}, function (_ref2) {
5666 var theme = _ref2.theme;
5667 return theme.datepickerColors.dpBackground;
5668}, function (_ref3) {
5669 var theme = _ref3.theme;
5670 return theme.colors.gray5;
5671}, function (_ref4) {
5672 var theme = _ref4.theme;
5673 return theme.colors.white;
5674}, function (_ref5) {
5675 var theme = _ref5.theme;
5676 return theme.colors.gray5;
5677}, function (_ref6) {
5678 var theme = _ref6.theme;
5679 return theme.colors.white;
5680}, function (_ref7) {
5681 var theme = _ref7.theme;
5682 return theme.colors.gray5;
5683}, function (_ref8) {
5684 var theme = _ref8.theme;
5685 return theme.colors.gray9;
5686}, function (_ref9) {
5687 var theme = _ref9.theme;
5688 return theme.colors.boxShadowLight;
5689}, function (_ref10) {
5690 var theme = _ref10.theme;
5691 return theme.datepickerColors.dpBackground;
5692}, function (_ref11) {
5693 var theme = _ref11.theme;
5694 return theme.colors.white;
5695}, function (_ref12) {
5696 var theme = _ref12.theme;
5697 return theme.datepickerColors.navArrow;
5698}, function (_ref13) {
5699 var theme = _ref13.theme;
5700 return theme.datepickerColors.navArrowHover;
5701}, function (_ref14) {
5702 var theme = _ref14.theme;
5703 return theme.colors.gray3;
5704}, function (_ref15) {
5705 var theme = _ref15.theme;
5706 return theme.datepickerColors.navArrow;
5707}, function (_ref16) {
5708 var theme = _ref16.theme;
5709 return theme.datepickerColors.navArrowHover;
5710}, function (_ref17) {
5711 var theme = _ref17.theme;
5712 return theme.colors.gray3;
5713}, function (_ref18) {
5714 var theme = _ref18.theme;
5715 return theme.datepickerColors.dpBackground;
5716}, function (_ref19) {
5717 var theme = _ref19.theme;
5718 return theme.datepickerColors.dpBackground;
5719}, function (_ref20) {
5720 var theme = _ref20.theme;
5721 return theme.datepickerColors.dpBackground;
5722}, function (_ref21) {
5723 var theme = _ref21.theme;
5724 return theme.datepickerColors.dpBackground;
5725}, function (_ref22) {
5726 var theme = _ref22.theme;
5727 return theme.colors.gray5;
5728}, function (_ref23) {
5729 var theme = _ref23.theme;
5730 return theme.colors.gray5;
5731}, function (_ref24) {
5732 var theme = _ref24.theme;
5733 return theme.colors.gray1;
5734}, function (_ref25) {
5735 var theme = _ref25.theme;
5736 return theme.datepickerColors.selected;
5737}, function (_ref26) {
5738 var theme = _ref26.theme;
5739 return theme.datepickerColors.selected;
5740}, function (_ref27) {
5741 var theme = _ref27.theme;
5742 return theme.colors.gray2;
5743}, function (_ref28) {
5744 var theme = _ref28.theme;
5745 return theme.colors.gray2;
5746}, function (_ref29) {
5747 var theme = _ref29.theme;
5748 return theme.colors.gray1;
5749}, function (_ref30) {
5750 var theme = _ref30.theme;
5751 return theme.colors.white;
5752}, function (_ref31) {
5753 var theme = _ref31.theme;
5754 return theme.colors.gray9;
5755}, function (_ref32) {
5756 var theme = _ref32.theme;
5757 return theme.colors.gray3;
5758}, function (_ref33) {
5759 var theme = _ref33.theme;
5760 return theme.datepickerColors.highlight;
5761}, function (_ref34) {
5762 var theme = _ref34.theme;
5763 return theme.colors.white;
5764}, function (_ref35) {
5765 var theme = _ref35.theme;
5766 return theme.datepickerColors.highlightHover;
5767}, function (_ref36) {
5768 var theme = _ref36.theme;
5769 return theme.colors.gray9;
5770}, function (_ref37) {
5771 var theme = _ref37.theme;
5772 return theme.datepickerColors.selected;
5773}, function (_ref38) {
5774 var theme = _ref38.theme;
5775 return theme.colors.white;
5776}, function (_ref39) {
5777 var theme = _ref39.theme;
5778 return theme.datepickerColors.hover;
5779}, function (_ref40) {
5780 var theme = _ref40.theme;
5781 return theme.datepickerColors.keyboard;
5782}, function (_ref41) {
5783 var theme = _ref41.theme;
5784 return theme.colors.white;
5785}, function (_ref42) {
5786 var theme = _ref42.theme;
5787 return theme.datepickerColors.hover;
5788}, function (_ref43) {
5789 var theme = _ref43.theme;
5790 return theme.datepickerColors.inRange;
5791}, function (_ref44) {
5792 var theme = _ref44.theme;
5793 return theme.colors.gray9;
5794}, function (_ref45) {
5795 var theme = _ref45.theme;
5796 return theme.colors.gray3;
5797}, function (_ref46) {
5798 var theme = _ref46.theme;
5799 return theme.colors.gray9;
5800}, function (_ref47) {
5801 var theme = _ref47.theme;
5802 return theme.colors.gray5;
5803}, function (_ref48) {
5804 var theme = _ref48.theme;
5805 return theme.colors.white;
5806}, function (_ref49) {
5807 var theme = _ref49.theme;
5808 return theme.colors.gray5;
5809}, function (_ref50) {
5810 var theme = _ref50.theme;
5811 return theme.colors.gray3;
5812}, function (_ref51) {
5813 var theme = _ref51.theme;
5814 return theme.colors.gray1;
5815}, function (_ref52) {
5816 var theme = _ref52.theme;
5817 return theme.colors.gray5;
5818}, function (_ref53) {
5819 var theme = _ref53.theme;
5820 return theme.colors.gray3;
5821}, function (_ref54) {
5822 var theme = _ref54.theme;
5823 return theme.datepickerColors.selected;
5824}, function (_ref55) {
5825 var theme = _ref55.theme;
5826 return theme.colors.white;
5827}, function (_ref56) {
5828 var theme = _ref56.theme;
5829 return theme.colors.gray1;
5830}, function (_ref57) {
5831 var theme = _ref57.theme;
5832 return theme.colors.gray5;
5833}, function (_ref58) {
5834 var theme = _ref58.theme;
5835 return theme.colors.boxShadowDark;
5836}, function (_ref59) {
5837 var theme = _ref59.theme;
5838 return theme.datepickerColors.navArrow;
5839}, function (_ref60) {
5840 var theme = _ref60.theme;
5841 return theme.datepickerColors.navArrowHover;
5842}, function (_ref61) {
5843 var theme = _ref61.theme;
5844 return theme.colors.gray3;
5845}, function (_ref62) {
5846 var theme = _ref62.theme;
5847 return theme.datepickerColors.navArrow;
5848}, function (_ref63) {
5849 var theme = _ref63.theme;
5850 return theme.datepickerColors.navArrowHover;
5851}, function (_ref64) {
5852 var theme = _ref64.theme;
5853 return theme.colors.gray3;
5854});
5855
5856/* https://github.com/Hacker0x01/react-datepicker/blob/master/src/index.jsx */
5857/* https://github.com/FezVrasta/popper.js/blob/master/packages/popper/src/methods/placements.js */
5858
5859var popperPlacementPositions = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];
5860var reactDatePickerPropTypes = {
5861 adjustDateOnChange: PropTypes.bool,
5862 allowSameDay: PropTypes.bool,
5863 autoComplete: PropTypes.string,
5864 autoFocus: PropTypes.bool,
5865 calendarClassName: PropTypes.string,
5866 calendarContainer: PropTypes.func,
5867 children: PropTypes.node,
5868 className: PropTypes.string,
5869 customInput: PropTypes.element,
5870 customInputRef: PropTypes.string,
5871 // eslint-disable-next-line react/no-unused-prop-types
5872 dateFormat: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
5873 dateFormatCalendar: PropTypes.string,
5874 dayClassName: PropTypes.func,
5875 disabled: PropTypes.bool,
5876 disabledKeyboardNavigation: PropTypes.bool,
5877 dropdownMode: PropTypes.oneOf(["scroll", "select"]).isRequired,
5878 endDate: PropTypes.instanceOf(Date),
5879 excludeDates: PropTypes.array,
5880 filterDate: PropTypes.func,
5881 fixedHeight: PropTypes.bool,
5882 formatWeekNumber: PropTypes.func,
5883 highlightDates: PropTypes.array,
5884 id: PropTypes.string,
5885 includeDates: PropTypes.array,
5886 includeTimes: PropTypes.array,
5887 injectTimes: PropTypes.array,
5888 inline: PropTypes.bool,
5889 isClearable: PropTypes.bool,
5890 locale: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
5891 locale: PropTypes.object
5892 })]),
5893 maxDate: PropTypes.instanceOf(Date),
5894 minDate: PropTypes.instanceOf(Date),
5895 monthsShown: PropTypes.number,
5896 name: PropTypes.string,
5897 onBlur: PropTypes.func,
5898 onChange: PropTypes.func.isRequired,
5899 onSelect: PropTypes.func,
5900 onWeekSelect: PropTypes.func,
5901 onClickOutside: PropTypes.func,
5902 onChangeRaw: PropTypes.func,
5903 onFocus: PropTypes.func,
5904 onInputClick: PropTypes.func,
5905 onKeyDown: PropTypes.func,
5906 onMonthChange: PropTypes.func,
5907 onYearChange: PropTypes.func,
5908 onInputError: PropTypes.func,
5909 open: PropTypes.bool,
5910 openToDate: PropTypes.instanceOf(Date),
5911 peekNextMonth: PropTypes.bool,
5912 placeholderText: PropTypes.string,
5913 popperContainer: PropTypes.func,
5914 popperClassName: PropTypes.string,
5915 // <PopperComponent/> props
5916 popperModifiers: PropTypes.object,
5917 // <PopperComponent/> props
5918 popperPlacement: PropTypes.oneOf(popperPlacementPositions),
5919 // <PopperComponent/> props
5920 popperProps: PropTypes.object,
5921 preventOpenOnFocus: PropTypes.bool,
5922 readOnly: PropTypes.bool,
5923 required: PropTypes.bool,
5924 scrollableYearDropdown: PropTypes.bool,
5925 scrollableMonthYearDropdown: PropTypes.bool,
5926 selected: PropTypes.instanceOf(Date),
5927 selectsEnd: PropTypes.bool,
5928 selectsStart: PropTypes.bool,
5929 showMonthDropdown: PropTypes.bool,
5930 showMonthYearDropdown: PropTypes.bool,
5931 showWeekNumbers: PropTypes.bool,
5932 showYearDropdown: PropTypes.bool,
5933 strictParsing: PropTypes.bool,
5934 forceShowMonthNavigation: PropTypes.bool,
5935 showDisabledMonthNavigation: PropTypes.bool,
5936 startDate: PropTypes.instanceOf(Date),
5937 startOpen: PropTypes.bool,
5938 tabIndex: PropTypes.number,
5939 timeCaption: PropTypes.string,
5940 title: PropTypes.string,
5941 todayButton: PropTypes.node,
5942 useWeekdaysShort: PropTypes.bool,
5943 formatWeekDay: PropTypes.func,
5944 value: PropTypes.string,
5945 weekLabel: PropTypes.string,
5946 withPortal: PropTypes.bool,
5947 yearDropdownItemNumber: PropTypes.number,
5948 shouldCloseOnSelect: PropTypes.bool,
5949 showTimeInput: PropTypes.bool,
5950 showMonthYearPicker: PropTypes.bool,
5951 showTimeSelect: PropTypes.bool,
5952 showTimeSelectOnly: PropTypes.bool,
5953 timeFormat: PropTypes.string,
5954 timeIntervals: PropTypes.number,
5955 minTime: PropTypes.instanceOf(Date),
5956 maxTime: PropTypes.instanceOf(Date),
5957 excludeTimes: PropTypes.array,
5958 useShortMonthInDropdown: PropTypes.bool,
5959 clearButtonTitle: PropTypes.string,
5960 previousMonthButtonLabel: PropTypes.string,
5961 nextMonthButtonLabel: PropTypes.string,
5962 timeInputLabel: PropTypes.string,
5963 renderCustomHeader: PropTypes.func,
5964 renderDayContents: PropTypes.func,
5965 inlineFocusSelectedMonth: PropTypes.bool,
5966 onDayMouseEnter: PropTypes.func,
5967 onMonthMouseLeave: PropTypes.func
5968};
5969
5970function ownKeys$7(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { keys.push.apply(keys, _Object$getOwnPropertySymbols(object)); } if (enumerableOnly) keys = _filterInstanceProperty(keys).call(keys, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
5971
5972function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; _forEachInstanceProperty(_context = ownKeys$7(source, true)).call(_context, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context2; _forEachInstanceProperty(_context2 = ownKeys$7(source)).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
5973var STRING_FORMAT = 'yyyy-MM-dd';
5974
5975function normalizeDateString(date) {
5976 var stringFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : STRING_FORMAT;
5977
5978 if (typeof date === 'string') {
5979 var parsedDate = dateFns.parse(date, stringFormat, new Date());
5980 return dateFns.isValid(parsedDate) ? dateFns.format(parsedDate, stringFormat) : '';
5981 }
5982
5983 return dateFns.isValid(date) ? dateFns.format(date, stringFormat) : '';
5984}
5985
5986function normalizeDate(date) {
5987 if (typeof date === 'string') {
5988 var parsedDate = dateFns.parse(date, STRING_FORMAT, new Date());
5989 return dateFns.isValid(parsedDate) ? parsedDate : null;
5990 }
5991
5992 return dateFns.isValid(date) ? date : null;
5993}
5994/* eslint-disable react/prop-types */
5995
5996
5997function NativeDatePicker(props) {
5998 return (
5999 /*#__PURE__*/
6000 React__default.createElement(Textbox, _extends({
6001 prependIconName: "calendar",
6002 type: "date",
6003 value: normalizeDateString(props.selectedDate)
6004 }, props))
6005 );
6006}
6007
6008var _StyledMaskedTextbox = styled__default(MaskedTextbox)(["max-width:265px;"]);
6009
6010var DateTextbox =
6011/*#__PURE__*/
6012React__default.forwardRef(function DateTextbox(props, ref) {
6013 var inputRef = React__default.useRef();
6014 React__default.useImperativeHandle(ref, function () {
6015 return {
6016 focus: function focus() {
6017 inputRef.current.focus();
6018 }
6019 };
6020 });
6021 /* eslint-disable react/forbid-foreign-prop-types */
6022
6023 var datepickerProps = _pick(props, _Object$keys(reactDatePickerPropTypes));
6024
6025 var textboxProps = _omit(props, _Object$keys(reactDatePickerPropTypes));
6026 /* eslint-enable react/forbid-foreign-prop-types */
6027
6028
6029 var textbox =
6030 /*#__PURE__*/
6031 React__default.createElement(_StyledMaskedTextbox, _extends({
6032 maskType: "date",
6033 placeholder: props.placeholder,
6034 prependIconName: "calendar",
6035 ref: inputRef
6036 }, textboxProps));
6037 return (
6038 /*#__PURE__*/
6039 React__default.createElement(React__default.Fragment, null,
6040 /*#__PURE__*/
6041 React__default.createElement(DatepickerStyles, null), props.suppressDatepicker ? textbox :
6042 /*#__PURE__*/
6043 React__default.createElement(ReactDatePicker, _extends({
6044 customInput: textbox,
6045 placeholderText: props.placeholder,
6046 selected: normalizeDate(props.selectedDate)
6047 }, datepickerProps)))
6048 );
6049});
6050/* eslint-enable react/prop-types */
6051
6052var DatePicker = function DatePicker(props) {
6053 var normalizedDateFromProps = props.selectedDate ? normalizeDate(props.selectedDate) : null;
6054
6055 var _useState = React.useState(normalizedDateFromProps),
6056 _useState2 = _slicedToArray(_useState, 2),
6057 selectedDate = _useState2[0],
6058 setSelectedDate = _useState2[1];
6059
6060 function dateSelected(dateOrEvent) {
6061 if (dateOrEvent) {
6062 if (dateFns.isValid(dateOrEvent)) {
6063 setSelectedDate(dateOrEvent);
6064 } else {
6065 var normalizedDate = normalizeDate(dateOrEvent.target.value);
6066 setSelectedDate(normalizedDate);
6067 }
6068 } else {
6069 setSelectedDate(null);
6070 }
6071 }
6072
6073 React.useEffect(function () {
6074 if (normalizeDateString(selectedDate) !== normalizeDateString(props.selectedDate)) {
6075 props.onChange(selectedDate);
6076 }
6077 }, [selectedDate]);
6078 var windowWidth = useWindowWidth();
6079 var theme = useTheme();
6080 var phoneWidth = _parseInt(theme.screenSize.phone, 10) || 0;
6081 var userAgent = navigator.userAgent.toLowerCase();
6082 var isAndroid = _indexOfInstanceProperty(userAgent).call(userAgent, 'android') > -1;
6083 var DatePickerInput = props.allowNativeDatepickerOnMobile && windowWidth <= phoneWidth && !isAndroid ? NativeDatePicker : DateTextbox;
6084
6085 var actualProps = _objectSpread$7(_objectSpread$7({}, props), {}, {
6086 selectedDate: selectedDate,
6087 onChange: props.onChange ? dateSelected : _noop
6088 });
6089
6090 return (
6091 /*#__PURE__*/
6092 React__default.createElement(DatePickerInput, actualProps)
6093 );
6094};
6095
6096DatePicker.propTypes = process.env.NODE_ENV !== "production" ? {
6097 suppressDatepicker: PropTypes.bool,
6098 allowNativeDatepickerOnMobile: PropTypes.bool,
6099 selectedDate: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string]),
6100 onChange: PropTypes.func
6101} : {};
6102DatePicker.defaultProps = {
6103 suppressDatepicker: false,
6104 allowNativeDatepickerOnMobile: true,
6105 selectedDate: '',
6106 onChange: undefined
6107};
6108
6109function onNonNumericHandler(event) {
6110 // prevent other normally allowed numeric keys: e, +, -, .
6111 if (event.keyCode === 69 || event.keyCode === 187 || event.keyCode === 189 || event.keyCode === 190) {
6112 event.preventDefault();
6113 }
6114}
6115
6116var DayInput = styled__default(InputBase)(["appearance:textfield;flex:1 0 35px;&::-webkit-inner-spin-button,&::-webkit-outer-spin-button{appearance:none;margin:0;}"]);
6117
6118function Day(_ref) {
6119 var onChange = _ref.onChange,
6120 date = _ref.date,
6121 props = _objectWithoutProperties(_ref, ["onChange", "date"]);
6122
6123 var theme = useTheme();
6124 var validationState = React__default.useContext(ValidationContext);
6125
6126 var _React$useState = React__default.useState(date ? date.getDate() : ''),
6127 _React$useState2 = _slicedToArray(_React$useState, 2),
6128 value = _React$useState2[0],
6129 setValue = _React$useState2[1];
6130
6131 function onDayChange(event) {
6132 var day = event.target.value;
6133 day = day.length > 2 ? _sliceInstanceProperty(day).call(day, 0, 2) : day;
6134 setValue(day);
6135 onChange('day', day);
6136 }
6137
6138 return (
6139 /*#__PURE__*/
6140 React__default.createElement(DayInput, _extends({
6141 type: "number",
6142 inputmode: "numeric",
6143 pattern: "[0-9]*",
6144 min: "1",
6145 max: "31",
6146 onKeyDown: onNonNumericHandler,
6147 onChange: onDayChange,
6148 placeholder: "Day",
6149 value: value
6150 }, theme.validationInputColor[validationState], props))
6151 );
6152}
6153
6154var MonthDropdown = styled__default(Dropdown)(["flex:3 1 100px;"]);
6155
6156function Month(_ref) {
6157 var onChange = _ref.onChange,
6158 monthNames = _ref.monthNames,
6159 selectOptionText = _ref.selectOptionText,
6160 date = _ref.date,
6161 props = _objectWithoutProperties(_ref, ["onChange", "monthNames", "selectOptionText", "date"]);
6162
6163 var theme = useTheme();
6164 var validationState = React__default.useContext(ValidationContext);
6165
6166 var _React$useState = React__default.useState(date ? date.getMonth() + 1 : ''),
6167 _React$useState2 = _slicedToArray(_React$useState, 2),
6168 month = _React$useState2[0],
6169 setMonth = _React$useState2[1];
6170
6171 function onMonthChange(event) {
6172 setMonth(event.target.value);
6173 onChange('month', event.target.value);
6174 }
6175
6176 return (
6177 /*#__PURE__*/
6178 React__default.createElement(MonthDropdown, _extends({
6179 onChange: onMonthChange
6180 }, theme.validationInputColor[validationState], {
6181 value: month
6182 }, props), selectOptionText &&
6183 /*#__PURE__*/
6184 React__default.createElement("option", {
6185 value: "none"
6186 }, selectOptionText), _mapInstanceProperty(monthNames).call(monthNames, function (value, index) {
6187 return (
6188 /*#__PURE__*/
6189 React__default.createElement("option", {
6190 value: index + 1,
6191 key: value
6192 }, value)
6193 );
6194 }))
6195 );
6196}
6197
6198Month.propTypes = process.env.NODE_ENV !== "production" ? {
6199 /** array of month names */
6200 monthNames: PropTypes.array,
6201
6202 /** adds an unselected option at the top */
6203 selectOptionText: PropTypes.string
6204} : {};
6205Month.defaultProps = {
6206 monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
6207 selectOptionText: undefined
6208};
6209
6210var YearInput = styled__default(InputBase)(["appearance:textfield;flex:2 0 40px;&::-webkit-inner-spin-button,&::-webkit-outer-spin-button{appearance:none;margin:0;}"]);
6211
6212function Year(_ref) {
6213 var onChange = _ref.onChange,
6214 date = _ref.date,
6215 props = _objectWithoutProperties(_ref, ["onChange", "date"]);
6216
6217 var theme = useTheme();
6218 var validationState = React__default.useContext(ValidationContext);
6219
6220 var _React$useState = React__default.useState(date ? date.getFullYear() : ''),
6221 _React$useState2 = _slicedToArray(_React$useState, 2),
6222 value = _React$useState2[0],
6223 setValue = _React$useState2[1];
6224
6225 function onYearChange(event) {
6226 var year = event.target.value;
6227 year = year.length > 4 ? _sliceInstanceProperty(year).call(year, 0, 4) : year;
6228 setValue(year);
6229 onChange('year', year);
6230 }
6231
6232 return (
6233 /*#__PURE__*/
6234 React__default.createElement(YearInput, _extends({
6235 type: "number",
6236 inputmode: "numeric",
6237 pattern: "[0-9]*",
6238 onChange: onYearChange,
6239 onKeyDown: onNonNumericHandler,
6240 placeholder: "Year",
6241 value: value
6242 }, theme.validationInputColor[validationState], props))
6243 );
6244}
6245
6246function ownKeys$8(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { keys.push.apply(keys, _Object$getOwnPropertySymbols(object)); } if (enumerableOnly) keys = _filterInstanceProperty(keys).call(keys, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
6247
6248function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context5; _forEachInstanceProperty(_context5 = ownKeys$8(source, true)).call(_context5, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context6; _forEachInstanceProperty(_context6 = ownKeys$8(source)).call(_context6, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
6249var Wrapper = styled__default.div(["display:flex;&& > *{margin-right:2px;}@media (min-width:", "){max-width:350px;}"], function (props) {
6250 return props.theme.screenSize.tablet;
6251});
6252
6253function cleanZeroes(day) {
6254 var cleanDay = day;
6255
6256 while (cleanDay.charAt(0) === '0') {
6257 cleanDay = cleanDay.substr(1);
6258 }
6259
6260 return cleanDay;
6261}
6262
6263function reducer(state, action) {
6264 switch (action.type) {
6265 case 'day_updated':
6266 return _objectSpread$8(_objectSpread$8({}, state), {}, {
6267 day: action.value
6268 });
6269
6270 case 'month_updated':
6271 return _objectSpread$8(_objectSpread$8({}, state), {}, {
6272 month: action.value
6273 });
6274
6275 case 'year_updated':
6276 return _objectSpread$8(_objectSpread$8({}, state), {}, {
6277 year: action.value
6278 });
6279
6280 default:
6281 throw new Error();
6282 }
6283}
6284
6285function DateInput(_ref) {
6286 var _context4;
6287
6288 var children = _ref.children,
6289 defaultValue = _ref.defaultValue,
6290 defaultDay = _ref.defaultDay,
6291 id = _ref.id,
6292 maxDate = _ref.maxDate,
6293 minDate = _ref.minDate,
6294 onBlur = _ref.onBlur,
6295 onChange = _ref.onChange,
6296 props = _objectWithoutProperties(_ref, ["children", "defaultValue", "defaultDay", "id", "maxDate", "minDate", "onBlur", "onChange"]);
6297
6298 var _useReducer = React.useReducer(reducer, {
6299 day: defaultValue ? defaultValue.getDate() : defaultDay,
6300 month: defaultValue ? defaultValue.getMonth() + 1 : '',
6301 year: defaultValue ? defaultValue.getFullYear().toString() : ''
6302 }),
6303 _useReducer2 = _slicedToArray(_useReducer, 2),
6304 state = _useReducer2[0],
6305 dispatch = _useReducer2[1];
6306
6307 var hasDayElement = React.useRef(false);
6308 React.useEffect(function () {
6309 var _context;
6310
6311 _forEachInstanceProperty(_context = React__default.Children).call(_context, children, function (child) {
6312 if (child.type === Month && !state.month) {
6313 if (child.props.selectOptionText) {
6314 dispatch({
6315 type: 'month_updated',
6316 value: 'none'
6317 });
6318 }
6319 }
6320
6321 if (child.type === Day) {
6322 hasDayElement.current = true;
6323 }
6324 });
6325 }, []);
6326
6327 function createDate(year, month, day) {
6328 var _context2, _context3;
6329
6330 var cleanDay = day ? cleanZeroes(day.toString()) : day;
6331 var date = new Date(_concatInstanceProperty(_context2 = _concatInstanceProperty(_context3 = "".concat(year, "/")).call(_context3, month, "/")).call(_context2, cleanDay));
6332 var dateIsValid = month !== 'none' && year.length === 4 && (hasDayElement.current ? date.getDate().toString() === cleanDay : true) && (month ? (date.getMonth() + 1).toString() === month.toString() : true) && date.getFullYear().toString() === year.toString();
6333 var isInRange = dateIsValid && (minDate ? dateFns.isAfter(date, minDate) : true) && (maxDate ? dateFns.isBefore(date, maxDate) : true);
6334 return {
6335 value: dateIsValid ? date : undefined,
6336 isInRange: isInRange
6337 };
6338 }
6339
6340 function onChangeDatePart(datePart, value) {
6341 switch (datePart) {
6342 case 'day':
6343 onChange(createDate(state.year, state.month, value));
6344 dispatch({
6345 type: 'day_updated',
6346 value: value
6347 });
6348 return;
6349
6350 case 'month':
6351 onChange(createDate(state.year, value, state.day));
6352 dispatch({
6353 type: 'month_updated',
6354 value: value
6355 });
6356 return;
6357
6358 case 'year':
6359 onChange(createDate(value, state.month, state.day));
6360 dispatch({
6361 type: 'year_updated',
6362 value: value
6363 });
6364 return;
6365
6366 default:
6367 throw new Error();
6368 }
6369 }
6370
6371 function onBlurComponent(event) {
6372 var target = event.currentTarget;
6373
6374 _setTimeout(function () {
6375 if (!target.contains(target.getRootNode().activeElement)) {
6376 onBlur(event);
6377 }
6378 }, 0);
6379 }
6380
6381 return (
6382 /*#__PURE__*/
6383 React__default.createElement(Wrapper, _extends({
6384 tabIndex: "-1"
6385 }, props, {
6386 onBlur: onBlurComponent
6387 }), _mapInstanceProperty(_context4 = React__default.Children).call(_context4, children, function (child, index) {
6388 return index === 0 ?
6389 /*#__PURE__*/
6390 React__default.cloneElement(child, {
6391 id: id,
6392 onChange: onChangeDatePart,
6393 date: createDate(state.year, state.month, state.day).value
6394 }) :
6395 /*#__PURE__*/
6396 React__default.cloneElement(child, {
6397 onChange: onChangeDatePart,
6398 date: createDate(state.year, state.month, state.day).value
6399 });
6400 }))
6401 );
6402}
6403
6404DateInput.propTypes = process.env.NODE_ENV !== "production" ? {
6405 id: PropTypes.string,
6406 children: PropTypes.node.isRequired,
6407
6408 /** set the minimum valid date */
6409 maxDate: PropTypes.instanceOf(Date),
6410
6411 /** set the maximum valid date */
6412 minDate: PropTypes.instanceOf(Date),
6413
6414 /** returns an object (value, isInRange) */
6415 onChange: PropTypes.func.isRequired,
6416 onBlur: PropTypes.func,
6417
6418 /** set the Date value of the component */
6419 defaultValue: PropTypes.instanceOf(Date),
6420
6421 /** Set the default day of the month */
6422 defaultDay: PropTypes.string
6423} : {};
6424DateInput.defaultProps = {
6425 id: undefined,
6426 maxDate: undefined,
6427 minDate: undefined,
6428 defaultValue: undefined,
6429 defaultDay: '',
6430 onBlur: _noop
6431};
6432DateInput.Day = Day;
6433DateInput.Month = Month;
6434DateInput.Year = Year;
6435
6436var IncrementerWrapper = styled__default.div(["align-items:flex-start;display:flex;"]);
6437var IncrementerTextbox = styled__default(InputBase)(["margin:0 10px;min-width:60px;padding-right:12px;text-align:center;@media (min-width:", "){width:60px;}-moz-appearance:textfield;&::-webkit-inner-spin-button,&::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}&::-ms-clear{display:none;}"], function (props) {
6438 return props.theme.screenSize.tablet;
6439});
6440var IncrementerButton = styled__default(Button)(["min-width:0;.es-button__display{min-width:0;}"]);
6441
6442function determineIsDisabled(threshold, newValue) {
6443 return _isFinite(threshold) && newValue === threshold;
6444}
6445
6446function sanitizeValue(val, lower, upper) {
6447 var enteredValue = _parseInt$1(val);
6448
6449 if (_isFinite(enteredValue)) {
6450 if (upper !== null && enteredValue > upper) {
6451 return upper;
6452 }
6453
6454 if (lower !== null && enteredValue < lower) {
6455 return lower;
6456 }
6457
6458 return enteredValue;
6459 }
6460
6461 return lower > 0 ? lower : 0;
6462}
6463
6464function updateCountReducer(state, action) {
6465 switch (action.type) {
6466 case 'increment':
6467 return {
6468 count: sanitizeValue(_parseInt$1(state.count) + _parseInt$1(action.amount), action.lower, action.upper)
6469 };
6470
6471 case 'decrement':
6472 return {
6473 count: sanitizeValue(_parseInt$1(state.count) - _parseInt$1(action.amount), action.lower, action.upper)
6474 };
6475
6476 case 'set':
6477 return {
6478 count: action.amount
6479 };
6480 }
6481
6482 return null;
6483}
6484
6485var ScreenReaderButtonText = screenReaderOnly('span');
6486
6487function Incrementer(_ref) {
6488 var startingValue = _ref.startingValue,
6489 incrementAmount = _ref.incrementAmount,
6490 decrementAmount = _ref.decrementAmount,
6491 upperThreshold = _ref.upperThreshold,
6492 lowerThreshold = _ref.lowerThreshold,
6493 useOutlineButton = _ref.useOutlineButton,
6494 onValueUpdated = _ref.onValueUpdated,
6495 other = _objectWithoutProperties(_ref, ["startingValue", "incrementAmount", "decrementAmount", "upperThreshold", "lowerThreshold", "useOutlineButton", "onValueUpdated"]);
6496
6497 var theme = useTheme();
6498 var initialRender = React.useRef(true);
6499
6500 var _React$useReducer = React__default.useReducer(updateCountReducer, {
6501 count: startingValue === null ? '' : startingValue
6502 }),
6503 _React$useReducer2 = _slicedToArray(_React$useReducer, 2),
6504 state = _React$useReducer2[0],
6505 dispatch = _React$useReducer2[1];
6506
6507 var isIncrementDisabled = determineIsDisabled(upperThreshold, state.count);
6508 var isDecrementDisabled = determineIsDisabled(lowerThreshold, state.count);
6509 React__default.useEffect(function () {
6510 if (!initialRender.current) {
6511 onValueUpdated(state.count);
6512 }
6513
6514 initialRender.current = false;
6515 }, [state.count]);
6516
6517 function setValue(event) {
6518 dispatch({
6519 type: 'set',
6520 amount: event.target.value
6521 });
6522 }
6523
6524 function decrementValue() {
6525 dispatch({
6526 type: 'decrement',
6527 amount: decrementAmount,
6528 lower: lowerThreshold,
6529 upper: upperThreshold
6530 });
6531 }
6532
6533 function incrementValue() {
6534 dispatch({
6535 type: 'increment',
6536 amount: incrementAmount,
6537 lower: lowerThreshold,
6538 upper: upperThreshold
6539 });
6540 }
6541
6542 function handleOnBlur(event) {
6543 var sanitizedValue = sanitizeValue(event.target.value, lowerThreshold, upperThreshold);
6544
6545 if (event.target.value !== sanitizedValue) {
6546 dispatch({
6547 type: 'set',
6548 amount: sanitizedValue
6549 });
6550 }
6551 }
6552
6553 function shortcutKeys(event) {
6554 if (upperThreshold && event.keyCode === 35) {
6555 dispatch({
6556 type: 'set',
6557 amount: upperThreshold
6558 });
6559 }
6560
6561 if (lowerThreshold && event.keyCode === 36) {
6562 dispatch({
6563 type: 'set',
6564 amount: lowerThreshold
6565 });
6566 }
6567 }
6568
6569 var RenderedButton = useOutlineButton ? OutlineButton : Button;
6570 return (
6571 /*#__PURE__*/
6572 React__default.createElement(IncrementerWrapper, null,
6573 /*#__PURE__*/
6574 React__default.createElement(IncrementerButton, {
6575 as: RenderedButton,
6576 styleType: "primary",
6577 onClick: decrementValue,
6578 disabled: isDecrementDisabled
6579 },
6580 /*#__PURE__*/
6581 React__default.createElement(ScreenReaderButtonText, null, "Decrement value by", decrementAmount),
6582 /*#__PURE__*/
6583 React__default.createElement(Icon, {
6584 name: "minus",
6585 size: 22
6586 })),
6587 /*#__PURE__*/
6588 React__default.createElement(IncrementerTextbox, _extends({}, theme.validationInputColor.default, other, {
6589 type: "number",
6590 role: "spinbutton",
6591 max: upperThreshold,
6592 min: lowerThreshold,
6593 step: incrementAmount,
6594 value: state.count,
6595 "aria-valuemin": lowerThreshold,
6596 "aria-valuemax": upperThreshold,
6597 "aria-valuenow": state.count,
6598 onKeyDown: shortcutKeys,
6599 onChange: setValue,
6600 onBlur: handleOnBlur
6601 })),
6602 /*#__PURE__*/
6603 React__default.createElement(IncrementerButton, {
6604 as: RenderedButton,
6605 styleType: "primary",
6606 onClick: incrementValue,
6607 disabled: isIncrementDisabled
6608 },
6609 /*#__PURE__*/
6610 React__default.createElement(ScreenReaderButtonText, null, "Increment value by", incrementAmount),
6611 /*#__PURE__*/
6612 React__default.createElement(Icon, {
6613 name: "add",
6614 size: 22
6615 })))
6616 );
6617}
6618
6619Incrementer.propTypes = process.env.NODE_ENV !== "production" ? {
6620 /** The starting value, 'null' is allowed for a blank value */
6621 startingValue: PropTypes.number,
6622
6623 /** The amount to increment the value by */
6624 incrementAmount: PropTypes.number,
6625
6626 /** The amount to decrement the value by */
6627 decrementAmount: PropTypes.number,
6628
6629 /** The highest value the incrementer can be incremented to */
6630 upperThreshold: PropTypes.number,
6631
6632 /** The lowest value the incrementer can be decremented to */
6633 lowerThreshold: PropTypes.number,
6634
6635 /** Use outline button styles */
6636 useOutlineButton: PropTypes.bool,
6637
6638 /** Function to execute with the new value */
6639 onValueUpdated: PropTypes.func
6640} : {};
6641Incrementer.defaultProps = {
6642 startingValue: 0,
6643 incrementAmount: 1,
6644 decrementAmount: 1,
6645 onValueUpdated: _noop,
6646 upperThreshold: null,
6647 lowerThreshold: null,
6648 useOutlineButton: false
6649};
6650
6651function getCallToActionChildren(children) {
6652 var _context;
6653
6654 var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';
6655 var allChildren = React__default.Children.toArray(children);
6656
6657 var actions = _mapInstanceProperty(_context = _filterInstanceProperty(allChildren).call(allChildren, function (child) {
6658 return child.type.name === 'Action';
6659 })).call(_context, function (action) {
6660 if (type === 'light') {
6661 var _styleType = action.props.isPrimary ? 'primary' : 'darkDefault';
6662
6663 return (
6664 /*#__PURE__*/
6665 React__default.cloneElement(action, {
6666 styleType: _styleType
6667 })
6668 );
6669 }
6670
6671 var styleType = action.props.isPrimary ? 'primary' : 'default';
6672 return (
6673 /*#__PURE__*/
6674 React__default.cloneElement(action, {
6675 styleType: styleType
6676 })
6677 );
6678 });
6679
6680 var nonActions = _filterInstanceProperty(allChildren).call(allChildren, function (child) {
6681 return child.type.name !== 'Action';
6682 });
6683
6684 return {
6685 actions: actions,
6686 nonActions: nonActions
6687 };
6688}
6689
6690function ownKeys$9(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { keys.push.apply(keys, _Object$getOwnPropertySymbols(object)); } if (enumerableOnly) keys = _filterInstanceProperty(keys).call(keys, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
6691
6692function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; _forEachInstanceProperty(_context = ownKeys$9(source, true)).call(_context, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context2; _forEachInstanceProperty(_context2 = ownKeys$9(source)).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
6693var Container$2 = styled__default.div(["flex-basis:100%;"]);
6694var CallToActionContainer = styled__default.div(["display:flex;justify-content:flex-end;"]);
6695
6696function CallToAction(_ref) {
6697 var children = _ref.children,
6698 rest = _objectWithoutProperties(_ref, ["children"]);
6699
6700 var _getCallToActionChild = getCallToActionChildren(children),
6701 actions = _getCallToActionChild.actions,
6702 nonActions = _getCallToActionChild.nonActions;
6703
6704 var props = _objectSpread$9(_objectSpread$9({}, rest), {}, {
6705 isDismissable: false
6706 });
6707
6708 return (
6709 /*#__PURE__*/
6710 React__default.createElement(React__default.Fragment, null,
6711 /*#__PURE__*/
6712 React__default.createElement(Notification$1, props,
6713 /*#__PURE__*/
6714 React__default.createElement(Container$2, null, nonActions)),
6715 /*#__PURE__*/
6716 React__default.createElement(CallToActionContainer, null, actions))
6717 );
6718}
6719
6720CallToAction.propTypes = process.env.NODE_ENV !== "production" ? {
6721 children: PropTypes.any
6722} : {};
6723CallToAction.defaultProps = {
6724 children: undefined
6725};
6726
6727function ownKeys$a(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { keys.push.apply(keys, _Object$getOwnPropertySymbols(object)); } if (enumerableOnly) keys = _filterInstanceProperty(keys).call(keys, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
6728
6729function _objectSpread$a(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; _forEachInstanceProperty(_context = ownKeys$a(source, true)).call(_context, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context2; _forEachInstanceProperty(_context2 = ownKeys$a(source)).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
6730var Container$3 = styled__default.div(["flex-basis:100%;"]);
6731var CallToActionContainer$1 = styled__default.div(["display:flex;justify-content:flex-end;"]);
6732
6733function LightCallToAction(_ref) {
6734 var children = _ref.children,
6735 rest = _objectWithoutProperties(_ref, ["children"]);
6736
6737 var _getCallToActionChild = getCallToActionChildren(children, 'light'),
6738 actions = _getCallToActionChild.actions,
6739 nonActions = _getCallToActionChild.nonActions;
6740
6741 var props = _objectSpread$a(_objectSpread$a({}, rest), {}, {
6742 isDismissable: false
6743 });
6744
6745 return (
6746 /*#__PURE__*/
6747 React__default.createElement(LightNotification, props,
6748 /*#__PURE__*/
6749 React__default.createElement(Container$3, null, nonActions,
6750 /*#__PURE__*/
6751 React__default.createElement(CallToActionContainer$1, null, actions)))
6752 );
6753}
6754
6755LightCallToAction.propTypes = process.env.NODE_ENV !== "production" ? {
6756 children: PropTypes.any
6757} : {};
6758LightCallToAction.defaultProps = {
6759 children: undefined
6760};
6761
6762var ActionButton$1 = styled__default(Button)([":not(:first-of-type){margin-left:15px;}"]);
6763function Action(_ref) {
6764 var isPrimary = _ref.isPrimary,
6765 children = _ref.children,
6766 rest = _objectWithoutProperties(_ref, ["isPrimary", "children"]);
6767
6768 return (
6769 /*#__PURE__*/
6770 React__default.createElement(ActionButton$1, rest, children)
6771 );
6772}
6773Action.propTypes = process.env.NODE_ENV !== "production" ? {
6774 isPrimary: PropTypes.bool,
6775 children: PropTypes.node
6776} : {};
6777Action.defaultProps = {
6778 isPrimary: false,
6779 children: null
6780};
6781
6782var sizes = {
6783 ACTIVE: 45,
6784 INACTIVE: 20,
6785 DESKTOP: 41,
6786 TRACKING_LINE_HEIGHT: 3
6787};
6788
6789var ACTIVE = sizes.ACTIVE,
6790 INACTIVE = sizes.INACTIVE,
6791 DESKTOP = sizes.DESKTOP,
6792 TRACKING_LINE_HEIGHT = sizes.TRACKING_LINE_HEIGHT;
6793
6794var getProgressLineBreakPercentage = function getProgressLineBreakPercentage(activeStepIndex, numberOfSteps) {
6795 return activeStepIndex / (numberOfSteps - 1) * 100;
6796};
6797
6798var getProgressItemWidthPercentage = function getProgressItemWidthPercentage(baseAmount) {
6799 return 1 / baseAmount * 100;
6800};
6801
6802var getCenterTopPosition = function getCenterTopPosition(containerHeight, itemHeight) {
6803 return containerHeight / 2 - itemHeight / 2;
6804};
6805
6806var stepStates = {
6807 active: 'active',
6808 pastStep: 'isPastStep',
6809 clickableFutureStep: 'clickableFutureStep'
6810};
6811var ProgressContainer = styled__default.ol(["align-items:flex-start;background-image:linear-gradient( to right,", " 0%,", " ", "%,", " ", "%,", " 100% );background-size:100% ", "px;background-position:0 ", "px;background-repeat:no-repeat;counter-reset:progress-tracker-counter;display:flex;flex-flow:row nowrap;justify-content:space-between;margin-left:0;padding-left:0;width:100%;@media (min-width:", "){background-position:center ", "px;background-size:", "% ", "px;}"], function (props) {
6812 return props.theme.colors.gray9;
6813}, function (props) {
6814 return props.theme.colors.gray9;
6815}, function (props) {
6816 return getProgressLineBreakPercentage(props.activeStepIndex, props.numberOfSteps);
6817}, function (props) {
6818 return props.theme.colors.gray5;
6819}, function (props) {
6820 return getProgressLineBreakPercentage(props.activeStepIndex, props.numberOfSteps);
6821}, function (props) {
6822 return props.theme.colors.gray5;
6823}, function () {
6824 return TRACKING_LINE_HEIGHT;
6825}, function () {
6826 return getCenterTopPosition(ACTIVE, TRACKING_LINE_HEIGHT);
6827}, function (props) {
6828 return props.theme.screenSize.tablet;
6829}, function () {
6830 return getCenterTopPosition(DESKTOP, TRACKING_LINE_HEIGHT);
6831}, function (props) {
6832 return 100 - getProgressItemWidthPercentage(props.numberOfSteps);
6833}, function () {
6834 return TRACKING_LINE_HEIGHT;
6835});
6836ProgressContainer.propTypes = {
6837 activePercentage: PropTypes.number
6838};
6839var BasicProgressButton = styled__default.button(["align-items:center;background:none;border:none;counter-increment:progress-tracker-counter;display:flex;flex-flow:column nowrap;font-family:'Source Sans Pro',sans-serif;margin-top:", "px;padding:0;text-align:center;&:active,&:hover,&:focus{outline:none;}@media (min-width:", "){font-size:18px;margin-top:0;margin:0 auto;}span{color:", ";display:none;font-size:18px;line-height:1.1em;@media (min-width:", "){display:inline;font-weight:normal;}}&::before{background-color:white;border:", ";border-radius:", "px;box-shadow:0 0 0 3px white;box-sizing:border-box;color:", ";content:counter(progress-tracker-counter);display:block;font-size:", "px;height:", "px;line-height:1em;margin-bottom:5px;text-align:center;width:", "px;position:relative;@media (min-width:", "){border-radius:", "px;border-width:3px;font-size:", "px;font-weight:normal;height:", "px;line-height:1.7em;width:", "px;}}"], function () {
6840 return getCenterTopPosition(ACTIVE, INACTIVE);
6841}, function (props) {
6842 return props.theme.screenSize.tablet;
6843}, function (props) {
6844 return props.theme.colors.gray9;
6845}, function (props) {
6846 return props.theme.screenSize.tablet;
6847}, function (props) {
6848 return "1px solid ".concat(props.theme.colors.gray5);
6849}, function () {
6850 return INACTIVE;
6851}, function (props) {
6852 return props.theme.colors.gray9;
6853}, function () {
6854 return INACTIVE * 0.8;
6855}, function () {
6856 return INACTIVE;
6857}, function () {
6858 return INACTIVE;
6859}, function (props) {
6860 return props.theme.screenSize.tablet;
6861}, function () {
6862 return DESKTOP;
6863}, function () {
6864 return DESKTOP * 0.488;
6865}, function () {
6866 return DESKTOP;
6867}, function () {
6868 return DESKTOP;
6869});
6870var FutureProgressButton = styled__default(BasicProgressButton)(["cursor:pointer;&:hover{&::before{box-shadow:rgba(0,0,0,0.35) 0 0 3px 1px;}}&:active,&:hover,&:focus{span{text-decoration:underline;}}"]);
6871var PastProgressButton = styled__default(BasicProgressButton)(["cursor:pointer;&:hover{&::before{box-shadow:rgba(0,0,0,0.35) 0 0 3px 1px;}}&:active,&:hover,&:focus{span{text-decoration:underline;}}&:focus{&::before{box-shadow:", " 0 0 4px 2px;}span{outline:1px dotted ", ";}}&::before{border-color:", ";@media (min-width:", "){border-width:5px;font-weight:bold;line-height:1.5em;}}span{@media (min-width:", "){font-weight:bold;}}"], function (props) {
6872 return props.theme.colors.inputFocus;
6873}, function (props) {
6874 return props.theme.colors.inputFocus;
6875}, function (props) {
6876 return props.theme.colors.gray9;
6877}, function (props) {
6878 return props.theme.screenSize.tablet;
6879}, function (props) {
6880 return props.theme.screenSize.tablet;
6881});
6882var NonNavigablePastProgressButton = styled__default(BasicProgressButton)(["&::before{border-color:", ";@media (min-width:", "){border-width:5px;font-weight:bold;line-height:1.5em;}}span{@media (min-width:", "){font-weight:bold;}}"], function (props) {
6883 return props.theme.colors.gray9;
6884}, function (props) {
6885 return props.theme.screenSize.tablet;
6886}, function (props) {
6887 return props.theme.screenSize.tablet;
6888});
6889var ActiveProgressButton = styled__default(BasicProgressButton)(["margin-top:0;&::before{border:5px solid ", ";border-radius:", "px;color:", ";font-size:", "px;font-weight:bold;height:", "px;line-height:1.5em;width:", "px;@media (min-width:", "){border-width:5px;font-size:", "px;height:", "px;line-height:1.5em;width:", "px;}}span{color:", ";display:inline;font-weight:bold;@media (min-width:", "){font-weight:bold;}}"], function (props) {
6890 return props.theme.brandColors.primary3;
6891}, ACTIVE, function (props) {
6892 return props.theme.brandColors.primary3;
6893}, ACTIVE * 0.488, ACTIVE, ACTIVE, function (props) {
6894 return props.theme.screenSize.tablet;
6895}, function () {
6896 return DESKTOP * 0.488;
6897}, function () {
6898 return DESKTOP;
6899}, function () {
6900 return DESKTOP;
6901}, function (props) {
6902 return props.theme.brandColors.primary3;
6903}, function (props) {
6904 return props.theme.screenSize.tablet;
6905});
6906var ProgressLi = styled__default.li(["display:flex;list-style-type:none;max-width:", "%;align-items:center;&:first-child{&,& button{align-items:flex-start;text-align:left;}}&:last-child{&,& button{align-items:flex-end;text-align:right;}}@media (min-width:", "){width:", "%;&:first-child,&:last-child{&,& button{align-items:center;text-align:center;}}}"], function (props) {
6907 return getProgressItemWidthPercentage(props.numberOfSteps - 1);
6908}, function (props) {
6909 return props.theme.screenSize.tablet;
6910}, function (props) {
6911 return getProgressItemWidthPercentage(props.numberOfSteps);
6912});
6913
6914function getProgressItemType(itemType, showNav) {
6915 switch (itemType) {
6916 case stepStates.active:
6917 return ActiveProgressButton;
6918
6919 case stepStates.pastStep:
6920 return showNav ? PastProgressButton : NonNavigablePastProgressButton;
6921
6922 case stepStates.clickableFutureStep:
6923 return showNav ? FutureProgressButton : BasicProgressButton;
6924
6925 default:
6926 return BasicProgressButton;
6927 }
6928}
6929
6930function getStepState(isActiveStep, isPastStep, canClickFutureStep) {
6931 if (isActiveStep) {
6932 return stepStates.active;
6933 }
6934
6935 if (isPastStep) {
6936 return stepStates.pastStep;
6937 }
6938
6939 if (canClickFutureStep) {
6940 return stepStates.clickableFutureStep;
6941 }
6942
6943 return stepStates.active;
6944}
6945
6946function ProgressItem(_ref) {
6947 var active = _ref.active,
6948 isPastStep = _ref.isPastStep,
6949 numberOfSteps = _ref.numberOfSteps,
6950 onPastStepClicked = _ref.onPastStepClicked,
6951 canClickFutureStep = _ref.canClickFutureStep,
6952 label = _ref.label,
6953 showNav = _ref.showNav;
6954 var itemType;
6955
6956 if (isPastStep || active || canClickFutureStep) {
6957 itemType = getStepState(active, isPastStep, canClickFutureStep);
6958 }
6959
6960 var ProgressItemType = getProgressItemType(itemType, showNav);
6961 var listItemProps = {
6962 numberOfSteps: numberOfSteps,
6963 disabled: !isPastStep && !canClickFutureStep,
6964 onClick: onPastStepClicked
6965 };
6966 return (
6967 /*#__PURE__*/
6968 React__default.createElement(ProgressLi, {
6969 numberOfSteps: numberOfSteps
6970 },
6971 /*#__PURE__*/
6972 React__default.createElement(ProgressItemType, listItemProps,
6973 /*#__PURE__*/
6974 React__default.createElement("span", null, label)))
6975 );
6976}
6977ProgressItem.propTypes = process.env.NODE_ENV !== "production" ? {
6978 active: PropTypes.bool.isRequired,
6979 isPastStep: PropTypes.bool.isRequired,
6980 numberOfSteps: PropTypes.number.isRequired,
6981 onPastStepClicked: PropTypes.func,
6982 label: PropTypes.string,
6983 canClickFutureStep: PropTypes.bool,
6984 showNav: PropTypes.bool
6985} : {};
6986ProgressItem.defaultProps = {
6987 onPastStepClicked: function onPastStepClicked() {},
6988 label: '',
6989 canClickFutureStep: false,
6990 showNav: true
6991};
6992
6993var getMappedSteps = function getMappedSteps(steps, _onPastStepClicked, _onFutureStepClicked, showNav) {
6994 var isPastStep = true;
6995 return _mapInstanceProperty(steps).call(steps, function (step, index) {
6996 var _context;
6997
6998 isPastStep = !(step.active || !isPastStep);
6999 return (
7000 /*#__PURE__*/
7001 React__default.createElement(ProgressItem
7002 /* eslint-disable react/no-array-index-key */
7003 , {
7004 key: _concatInstanceProperty(_context = "".concat(index, "-")).call(_context, step.label)
7005 /* eslint-enable */
7006 ,
7007 active: step.active,
7008 isPastStep: isPastStep,
7009 numberOfSteps: steps.length,
7010 onPastStepClicked: function onPastStepClicked() {
7011 return _onPastStepClicked(index);
7012 },
7013 canClickFutureStep: _onFutureStepClicked !== null && _onFutureStepClicked !== undefined,
7014 onFutureStepClicked: function onFutureStepClicked() {
7015 return _onFutureStepClicked(index);
7016 },
7017 label: step.label,
7018 showNav: showNav
7019 })
7020 );
7021 });
7022};
7023
7024var getIndexOfActiveStep = function getIndexOfActiveStep(steps) {
7025 return _findIndexInstanceProperty(steps).call(steps, function (step) {
7026 return step.active;
7027 });
7028};
7029
7030function ProgressTracker(_ref) {
7031 var steps = _ref.steps,
7032 onPastStepClicked = _ref.onPastStepClicked,
7033 onFutureStepClicked = _ref.onFutureStepClicked,
7034 showNav = _ref.showNav;
7035 return (
7036 /*#__PURE__*/
7037 React__default.createElement(ProgressContainer, {
7038 "data-testid": "progress-tracker",
7039 activeStepIndex: getIndexOfActiveStep(steps),
7040 numberOfSteps: steps.length
7041 }, getMappedSteps(steps, onPastStepClicked, onFutureStepClicked, showNav))
7042 );
7043}
7044
7045ProgressTracker.propTypes = process.env.NODE_ENV !== "production" ? {
7046 steps: PropTypes.arrayOf(PropTypes.shape({
7047 active: PropTypes.bool,
7048 label: PropTypes.string
7049 })),
7050 onPastStepClicked: PropTypes.func,
7051 onFutureStepClicked: PropTypes.func,
7052 showNav: PropTypes.bool
7053} : {};
7054ProgressTracker.defaultProps = {
7055 steps: [],
7056 onPastStepClicked: function onPastStepClicked() {},
7057 onFutureStepClicked: null,
7058 showNav: true
7059};
7060var ProgressTracker$1 = styled.withTheme(ProgressTracker);
7061
7062/* eslint-disable react/prop-types */
7063formatMessage.setup({
7064 missingTranslation: 'ignore'
7065});
7066var HelpContent = styled__default(Modal.Body)(["max-height:750px;overflow-y:scroll;ul{display:block;list-style-type:disc;margin-bottom:10px;margin-left:0;margin-right:0;padding-left:40px;ul{list-style-type:circle;}}"]);
7067var CautionRating = styled__default.div(["background-image:url(https://bdaim-webexcdn-p.azureedge.net/es-assets/images/poor-performer-mask.svg);background-size:100% 100%;height:30px;width:150px;"]);
7068var StarRating = styled__default.div(["background-image:url(https://bdaim-webexcdn-p.azureedge.net/es-assets/images/star-rating-mask.svg);background-color:#ffc436;height:28px;"]);
7069var RatingTable = styled__default(Table)(["border:1px solid black;text-align:left;margin:15px 0px;thead{font-weight:bold;}th,td{border:1px solid black;padding:8px;vertical-align:middle;}td{height:63px;}"]);
7070function StarRatingExplanation(props) {
7071 return (
7072 /*#__PURE__*/
7073 React__default.createElement(Modal, {
7074 show: props.show,
7075 size: "large",
7076 onHide: props.closeModal,
7077 parentSelector: function parentSelector() {
7078 return props.parentNode;
7079 }
7080 },
7081 /*#__PURE__*/
7082 React__default.createElement(Modal.Header, null, formatMessage('Plan Ratings')),
7083 /*#__PURE__*/
7084 React__default.createElement(HelpContent, null,
7085 /*#__PURE__*/
7086 React__default.createElement("p", null, formatMessage('The Overall Plan Rating combines scores, as rated by Medicare, for the types of services each plan offers.')),
7087 /*#__PURE__*/
7088 React__default.createElement(RatingTable, null,
7089 /*#__PURE__*/
7090 React__default.createElement("thead", null,
7091 /*#__PURE__*/
7092 React__default.createElement("tr", null,
7093 /*#__PURE__*/
7094 React__default.createElement("th", null, formatMessage('Legend')),
7095 /*#__PURE__*/
7096 React__default.createElement("th", null, formatMessage('Description')))),
7097 /*#__PURE__*/
7098 React__default.createElement("tbody", null,
7099 /*#__PURE__*/
7100 React__default.createElement("tr", null,
7101 /*#__PURE__*/
7102 React__default.createElement("td", null,
7103 /*#__PURE__*/
7104 React__default.createElement(CautionRating, null)),
7105 /*#__PURE__*/
7106 React__default.createElement("td", null, formatMessage('Caution - The plan has received low summary ratings from Medicare three years in a row.'))),
7107 /*#__PURE__*/
7108 React__default.createElement("tr", null,
7109 /*#__PURE__*/
7110 React__default.createElement("td", null,
7111 /*#__PURE__*/
7112 React__default.createElement(StarRating, null)),
7113 /*#__PURE__*/
7114 React__default.createElement("td", null, formatMessage("The plan has been given a 5 out 5 stars rating. People with Medicare can switch into these plans at any time during the year, even if it's not during an enrollment period."))))),
7115 /*#__PURE__*/
7116 React__default.createElement("strong", null, formatMessage('What is being measured?')),
7117 /*#__PURE__*/
7118 React__default.createElement("ul", null,
7119 /*#__PURE__*/
7120 React__default.createElement("li", null, formatMessage.rich('<s>For plans covering health services</s>, the overall score for quality of those services covers <s>36 different topics in 5 categories:</s>', {
7121 s: function s(_ref) {
7122 var children = _ref.children;
7123 return (
7124 /*#__PURE__*/
7125 React__default.createElement("strong", {
7126 key: "bold"
7127 }, children)
7128 );
7129 }
7130 }),
7131 /*#__PURE__*/
7132 React__default.createElement("ul", null,
7133 /*#__PURE__*/
7134 React__default.createElement("li", null, formatMessage.rich('<s>Staying healthy: screenings, tests, and vaccines:</s> Includes how often members got various screening tests, vaccines, and other check-ups that help them stay healthy.', {
7135 s: function s(_ref2) {
7136 var children = _ref2.children;
7137 return (
7138 /*#__PURE__*/
7139 React__default.createElement("strong", {
7140 key: "bold"
7141 }, children)
7142 );
7143 }
7144 })),
7145 /*#__PURE__*/
7146 React__default.createElement("li", null, formatMessage.rich('<s>Managing chronic (long-term) conditions:</s> Includes how often members with different conditions got certain tests and treatments that help them manage their condition.', {
7147 s: function s(_ref3) {
7148 var children = _ref3.children;
7149 return (
7150 /*#__PURE__*/
7151 React__default.createElement("strong", {
7152 key: "bold"
7153 }, children)
7154 );
7155 }
7156 })),
7157 /*#__PURE__*/
7158 React__default.createElement("li", null, formatMessage.rich('<s>Ratings of health plan responsiveness and care:</s> Includes ratings of member satisfaction with the plan.', {
7159 s: function s(_ref4) {
7160 var children = _ref4.children;
7161 return (
7162 /*#__PURE__*/
7163 React__default.createElement("strong", {
7164 key: "bold"
7165 }, children)
7166 );
7167 }
7168 })),
7169 /*#__PURE__*/
7170 React__default.createElement("li", null, formatMessage.rich('<s>Member complaints, problems getting services, and choosing to leave the plan:</s> Includes how often members filed complaints against the plan and how often members choose to leave the plan. Includes how often Medicare found problems with the plan.', {
7171 s: function s(_ref5) {
7172 var children = _ref5.children;
7173 return (
7174 /*#__PURE__*/
7175 React__default.createElement("strong", {
7176 key: "bold"
7177 }, children)
7178 );
7179 }
7180 })),
7181 /*#__PURE__*/
7182 React__default.createElement("li", null, formatMessage.rich('<s>Health plan customer service:</s> Includes how well the plan handles calls and makes decisions about member appeals for health coverage.', {
7183 s: function s(_ref6) {
7184 var children = _ref6.children;
7185 return (
7186 /*#__PURE__*/
7187 React__default.createElement("strong", {
7188 key: "bold"
7189 }, children)
7190 );
7191 }
7192 })))),
7193 /*#__PURE__*/
7194 React__default.createElement("li", null, formatMessage.rich('<s>For plans covering drug services,</s> the overall score for quality of those services covers <s>17 different topics in 4 categories:</s>', {
7195 s: function s(_ref7) {
7196 var children = _ref7.children;
7197 return (
7198 /*#__PURE__*/
7199 React__default.createElement("strong", {
7200 key: "bold"
7201 }, children)
7202 );
7203 }
7204 }),
7205 /*#__PURE__*/
7206 React__default.createElement("ul", null,
7207 /*#__PURE__*/
7208 React__default.createElement("li", null, formatMessage.rich('<s>Drug plan customer service:</s> Includes how well the plan handles calls and makes decisions about member appeals for drug coverage.', {
7209 s: function s(_ref8) {
7210 var children = _ref8.children;
7211 return (
7212 /*#__PURE__*/
7213 React__default.createElement("strong", {
7214 key: "bold"
7215 }, children)
7216 );
7217 }
7218 })),
7219 /*#__PURE__*/
7220 React__default.createElement("li", null, formatMessage.rich('<s>Member complaints, problems getting services, and choosing to leave the plan:</s> Includes how often members filed complaints about the plan and how often members choose to leave the plan. Includes how often Medicare found problems with the plan.', {
7221 s: function s(_ref9) {
7222 var children = _ref9.children;
7223 return (
7224 /*#__PURE__*/
7225 React__default.createElement("strong", {
7226 key: "bold"
7227 }, children)
7228 );
7229 }
7230 })),
7231 /*#__PURE__*/
7232 React__default.createElement("li", null, formatMessage.rich("<s>Member experience with plan's drug services:</s> Includes ratings of member satisfaction with the plan.", {
7233 s: function s(_ref10) {
7234 var children = _ref10.children;
7235 return (
7236 /*#__PURE__*/
7237 React__default.createElement("strong", {
7238 key: "bold"
7239 }, children)
7240 );
7241 }
7242 })),
7243 /*#__PURE__*/
7244 React__default.createElement("li", null, formatMessage.rich('<s>Drug pricing and patient safety:</s> Includes how well the plan prices prescriptions and provides updated and accurate pricing information for the Medicare website. Includes information on how often members with certain medical conditions get prescription drugs that are considered safer and clinically recommended for their condition. Includes information on whether members are taking certain medications as directed.', {
7245 s: function s(_ref11) {
7246 var children = _ref11.children;
7247 return (
7248 /*#__PURE__*/
7249 React__default.createElement("strong", {
7250 key: "bold"
7251 }, children)
7252 );
7253 }
7254 })))),
7255 /*#__PURE__*/
7256 React__default.createElement("li", null, formatMessage.rich('<s>For plans covering both health and drug services,</s> the overall score for quality of those services covers <s>all of the 53 topics listed above.</s>', {
7257 s: function s(_ref12) {
7258 var children = _ref12.children;
7259 return (
7260 /*#__PURE__*/
7261 React__default.createElement("strong", {
7262 key: "bold"
7263 }, children)
7264 );
7265 }
7266 }))),
7267 /*#__PURE__*/
7268 React__default.createElement("p", null,
7269 /*#__PURE__*/
7270 React__default.createElement("strong", null, formatMessage('Where does the information for the Overall Plan Rating come from?'))),
7271 /*#__PURE__*/
7272 React__default.createElement("ul", null,
7273 /*#__PURE__*/
7274 React__default.createElement("li", null, formatMessage.rich('For quality of <s>health services</s>, the information comes from sources that include:', {
7275 s: function s(_ref13) {
7276 var children = _ref13.children;
7277 return (
7278 /*#__PURE__*/
7279 React__default.createElement("strong", {
7280 key: "bold"
7281 }, children)
7282 );
7283 }
7284 }),
7285 /*#__PURE__*/
7286 React__default.createElement("ul", null,
7287 /*#__PURE__*/
7288 React__default.createElement("li", null, formatMessage('Member surveys done by Medicare')),
7289 /*#__PURE__*/
7290 React__default.createElement("li", null, formatMessage('Information from clinicians')),
7291 /*#__PURE__*/
7292 React__default.createElement("li", null, formatMessage('Information submitted by the plans')),
7293 /*#__PURE__*/
7294 React__default.createElement("li", null, formatMessage("Results from Medicare's regular monitoring activities")))),
7295 /*#__PURE__*/
7296 React__default.createElement("li", null, formatMessage.rich('For quality of <s>drug services</s>, the information comes from sources that include:', {
7297 s: function s(_ref14) {
7298 var children = _ref14.children;
7299 return (
7300 /*#__PURE__*/
7301 React__default.createElement("strong", {
7302 key: "bold"
7303 }, children)
7304 );
7305 }
7306 }),
7307 /*#__PURE__*/
7308 React__default.createElement("ul", null,
7309 /*#__PURE__*/
7310 React__default.createElement("li", null, formatMessage('Member surveys done by Medicare')),
7311 /*#__PURE__*/
7312 React__default.createElement("li", null, formatMessage('Reviews of billing and other information that plans submit to Medicare')),
7313 /*#__PURE__*/
7314 React__default.createElement("li", null, formatMessage("Results from Medicare's regular monitoring activities"))))),
7315 /*#__PURE__*/
7316 React__default.createElement("p", null,
7317 /*#__PURE__*/
7318 React__default.createElement("strong", null, formatMessage('Why is the Overall Plan Rating important?'))),
7319 /*#__PURE__*/
7320 React__default.createElement("p", null, formatMessage('The Overall Plan Rating gives you a single summary score that makes it easy for you to compare plans based on quality and performance. Learn more about differences among plans by looking at the detailed ratings.')),
7321 /*#__PURE__*/
7322 React__default.createElement("p", null, formatMessage('Medicare evaluates plans based on a 5-Star rating system. Star Ratings are calculated each year and may change from one year to the next.'))),
7323 /*#__PURE__*/
7324 React__default.createElement(Modal.Footer, null,
7325 /*#__PURE__*/
7326 React__default.createElement(ModalButtonContainer, null,
7327 /*#__PURE__*/
7328 React__default.createElement(Button, {
7329 onClick: props.closeModal
7330 }, formatMessage('Close')))))
7331 );
7332}
7333
7334formatMessage.setup({
7335 missingTranslation: 'ignore'
7336});
7337var StarContainer = styled__default.div(["background-color:", ";display:flex;flex-direction:column;height:21px;margin-top:3px;width:133px;"], function (props) {
7338 return !props.isPoorPerformer ? props.theme.colors.gray5 : 'transparent';
7339});
7340var StarRatingLink = styled__default(LinkButton)(["color:", ";border-bottom:1px dashed;text-decoration:none;&:hover,&:focus{color:", ";border-bottom:1px solid;}"], function (props) {
7341 return props.theme.colors.gray8;
7342}, function (props) {
7343 return props.theme.colors.gray8;
7344});
7345var StarFill = styled__default.span(["background-color:#ffc436;display:block;height:21px;margin-left:2px;width:", ";"], function (props) {
7346 return props.fillWidth;
7347});
7348var StarOverlay = styled__default.div(["background-image:url(https://bdaim-webexcdn-p.azureedge.net/es-assets/images/star-rating-mask.svg);height:25px;margin-top:-23px;"]);
7349var PoorPerformerOverlay = styled__default.div(["background-image:url(https://bdaim-webexcdn-p.azureedge.net/es-assets/images/poor-performer-mask.svg);background-size:100% 100%;height:30px;margin-top:-5px;"]);
7350
7351function getStarRatingBackgroundWidth(rating) {
7352 var starWidth = 20.2;
7353 var spaceWidth = 7;
7354 var ratingFloor = Math.floor(rating);
7355 var spaceNumber = ratingFloor === rating && rating !== 0 ? ratingFloor - 1 : ratingFloor;
7356 var spacingAmount = spaceWidth * spaceNumber;
7357 var width = starWidth * rating;
7358 return "".concat(width + spacingAmount, "px");
7359}
7360
7361function getAriaText(isPoorPerformer, rating) {
7362 if (isPoorPerformer) {
7363 return formatMessage('CMS has indicated that this plan is a poor performer');
7364 }
7365
7366 if (rating !== null) {
7367 return formatMessage("CMS has rated this plan {rating} out of five stars", {
7368 rating: rating
7369 });
7370 }
7371
7372 return '';
7373}
7374
7375function StarRating$1(_ref) {
7376 var rating = _ref.rating,
7377 isPoorPerformer = _ref.isPoorPerformer,
7378 onExplanationOpen = _ref.onExplanationOpen;
7379
7380 var _useState = React.useState(false),
7381 _useState2 = _slicedToArray(_useState, 2),
7382 showHelp = _useState2[0],
7383 updateShowHelp = _useState2[1];
7384
7385 var _useRootNode = useRootNode(document.body),
7386 _useRootNode2 = _slicedToArray(_useRootNode, 2),
7387 rootNode = _useRootNode2[0],
7388 rootNodeRef = _useRootNode2[1];
7389
7390 var ariaText = getAriaText(isPoorPerformer, rating);
7391 return (
7392 /*#__PURE__*/
7393 React__default.createElement(React__default.Fragment, null,
7394 /*#__PURE__*/
7395 React__default.createElement(StarRatingLink, {
7396 ref: rootNodeRef,
7397 onClick: function onClick() {
7398 if (onExplanationOpen) {
7399 onExplanationOpen();
7400 }
7401
7402 updateShowHelp(true);
7403 }
7404 }, rating === null &&
7405 /*#__PURE__*/
7406 React__default.createElement("span", null, formatMessage('Star Rating not available')), rating !== null &&
7407 /*#__PURE__*/
7408 React__default.createElement(StarContainer, {
7409 "aria-label": ariaText,
7410 isPoorPerformer: isPoorPerformer
7411 }, !isPoorPerformer ?
7412 /*#__PURE__*/
7413 React__default.createElement("div", null,
7414 /*#__PURE__*/
7415 React__default.createElement(StarFill, {
7416 fillWidth: getStarRatingBackgroundWidth(rating)
7417 }),
7418 /*#__PURE__*/
7419 React__default.createElement(StarOverlay, null)) :
7420 /*#__PURE__*/
7421 React__default.createElement("div", null,
7422 /*#__PURE__*/
7423 React__default.createElement(PoorPerformerOverlay, null)))),
7424 /*#__PURE__*/
7425 React__default.createElement(StarRatingExplanation, {
7426 show: showHelp,
7427 closeModal: function closeModal() {
7428 return updateShowHelp(false);
7429 },
7430 parentNode: rootNode
7431 }))
7432 );
7433}
7434
7435StarRating$1.propTypes = process.env.NODE_ENV !== "production" ? {
7436 rating: PropTypes.number.isRequired,
7437 isPoorPerformer: PropTypes.bool,
7438 onExplanationOpen: PropTypes.func
7439} : {};
7440StarRating$1.defaultProps = {
7441 isPoorPerformer: false,
7442 onExplanationOpen: function onExplanationOpen() {}
7443};
7444
7445var rotatorAnimation = styled.keyframes(["0%{transform:rotate(0deg);}100%{transform:rotate(270deg);}"]);
7446var ieAnimation = styled.keyframes(["0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}"]);
7447var dashAnimation = styled.keyframes(["0%{stroke-dashoffset:187;}50%{stroke-dashoffset:37.4;transform:rotate(135deg);}100%{stroke-dashoffset:187;transform:rotate(450deg);}"]);
7448
7449var colorsAnimation = function colorsAnimation(props) {
7450 return styled.keyframes(["0%{stroke:", ";}40%{stroke:", ";}80%{stroke:", ";}100%{stroke:", ";}"], props.theme.brandColors.primary1, props.theme.brandColors.primary2, props.theme.brandColors.primary3, props.theme.brandColors.primary1);
7451};
7452
7453var SpinnerSvg = styled__default.svg(["animation:", " 1.4s linear infinite;@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){animation:", " 1.4s linear infinite;}"], rotatorAnimation, ieAnimation);
7454var SpinnerCircle = styled__default.circle(["stroke:", ";stroke-dasharray:187;stroke-dashoffset:37.4;transform-origin:center;animation:", " 1.4s ease-in-out infinite,", " 3.5s ease-in-out infinite;"], function (props) {
7455 return props.theme.brandColors.secondary1;
7456}, dashAnimation, colorsAnimation);
7457
7458var Spinner = function Spinner(_ref) {
7459 var _context, _context2;
7460
7461 var title = _ref.title,
7462 description = _ref.description,
7463 other = _objectWithoutProperties(_ref, ["title", "description"]);
7464
7465 var titleId = title && "".concat(useUniqueId(other.id), "-title");
7466 var descId = description && "".concat(useUniqueId(other.id), "-desc");
7467 return (
7468 /*#__PURE__*/
7469 React__default.createElement(SpinnerSvg, _extends({
7470 viewBox: "0 0 66 66",
7471 xmlns: "http://www.w3.org/2000/svg",
7472 role: "img",
7473 "aria-labelledby": _trimInstanceProperty(_context = _concatInstanceProperty(_context2 = "".concat(titleId, " ")).call(_context2, descId)).call(_context)
7474 }, other), title &&
7475 /*#__PURE__*/
7476 React__default.createElement("title", {
7477 id: titleId
7478 }, title), description &&
7479 /*#__PURE__*/
7480 React__default.createElement("desc", {
7481 id: descId
7482 }, description),
7483 /*#__PURE__*/
7484 React__default.createElement(SpinnerCircle, {
7485 fill: "none",
7486 strokeWidth: "6",
7487 strokeLinecap: "round",
7488 cx: "33",
7489 cy: "33",
7490 r: "30"
7491 }))
7492 );
7493}; // eslint-disable-next-line consistent-return
7494
7495
7496var descriptionTitleProp = process.env.NODE_ENV !== "production" ? function (props, propName, componentName) {
7497 if (!props.title && !props.description) {
7498 return new Error("You must provide a title, description, or both to ".concat(componentName, "."));
7499 }
7500} : {};
7501Spinner.propTypes = process.env.NODE_ENV !== "production" ? {
7502 /** The title of the spinner for screen readers. This or `description` is
7503 * required */
7504 title: descriptionTitleProp,
7505
7506 /** The description of the spinner for screen readers. This or `title` is
7507 * required */
7508 description: descriptionTitleProp
7509} : {};
7510Spinner.defaultProps = {
7511 title: '',
7512 description: ''
7513};
7514
7515function _templateObject$3() {
7516 var data = _taggedTemplateLiteral(["\n html, body, div, span, applet, object, iframe,\n a, big, cite, code, del, dfn, em, img, ins, kbd,\n q, s, samp, strike, tt, var,\n b, u, i, center, fieldset, form, label, legend\n table, caption, tbody, tfoot, thead, tr, th, td,\n article, aside, canvas, details, embed,\n figure, figcaption, footer, header, hgroup,\n menu, nav, output, ruby, section, summary,\n time, mark, audio, video {\n border: 0;\n font-family: 'Source Sans Pro', 'Segoe UI', Segoe, Calibri, Tahoma, sans-serif;\n font-size: 100%;\n margin: 0;\n padding: 0;\n vertical-align: baseline;\n }\n\n ul, ol {\n margin: 0 1em 25px;\n padding-left: 1em;\n list-style-position: outside;\n }\n\n input, button {\n font: inherit;\n }\n\n table {\n border-collapse: collapse;\n border-spacing: 0;\n }\n\n small {\n font-size: 85%;\n }\n\n strong, b {\n font-family: 'Source Sans Pro', 'Segoe UI', Segoe, Calibri, Tahoma, sans-serif;\n font-weight: bold;\n }\n\n h1, h2, h3, h4, h5, h6 {\n color: inherit;\n font: inherit;\n font-family: 'Source Sans Pro', 'Segoe UI', Segoe, Calibri, Tahoma, sans-serif;\n font-weight: 300;\n line-height: 1.1;\n margin-bottom: 0.45em;\n margin-top: 0;\n }\n\n h1 {\n font-size: 44.78976px;\n }\n h2 {\n font-size: 37.3248px;\n }\n h3 {\n font-size: 31.104px;\n }\n h4 {\n font-size: 25.92px;\n }\n h5 {\n font-size: 21.6px;\n }\n h6 {\n font-size: 18px;\n }\n"]);
7517
7518 _templateObject$3 = function _templateObject() {
7519 return data;
7520 };
7521
7522 return data;
7523}
7524var StyleReset = styled.createGlobalStyle(_templateObject$3());
7525
7526function isValidEmail(emailAddress) {
7527 var re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
7528 return re.test(emailAddress);
7529}
7530
7531exports.Action = Action;
7532exports.ActionButton = ActionButton;
7533exports.AdditionalHelp = AdditionalHelp;
7534exports.Anchor = Anchor;
7535exports.AnswerButton = AnswerButton;
7536exports.AnswerGroup = AnswerGroup;
7537exports.Button = Button;
7538exports.CallToAction = CallToAction;
7539exports.Checkbox = Checkbox;
7540exports.CheckboxGroup = CheckboxGroup;
7541exports.Control = Control;
7542exports.DateInput = DateInput;
7543exports.DatePicker = DatePicker;
7544exports.Drawer = Drawer;
7545exports.Dropdown = Dropdown;
7546exports.DropdownButton = DropdownButton;
7547exports.Fade = Fade;
7548exports.Fieldset = Fieldset;
7549exports.FullColorIcon = FullColorIcon;
7550exports.Heading = Heading;
7551exports.HorizontalNav = HorizontalNav;
7552exports.HorizontalScrollWrapper = HorizontalScrollWrapper$1;
7553exports.Icon = Icon;
7554exports.IconButton = IconButton;
7555exports.Incrementer = Incrementer;
7556exports.InlineMessage = InlineMessage;
7557exports.Label = Label;
7558exports.LightCallToAction = LightCallToAction;
7559exports.LightNotification = LightNotification;
7560exports.LinkButton = LinkButton;
7561exports.LoadingSkeleton = LoadingSkeleton;
7562exports.MaskedTextbox = MaskedTextbox;
7563exports.Menu = Menu;
7564exports.Message = Message;
7565exports.MessageNotification = MessageNotification;
7566exports.Modal = Modal;
7567exports.ModalButtonContainer = ModalButtonContainer;
7568exports.Notification = Notification$1;
7569exports.OutlineButton = OutlineButton;
7570exports.PageHeading = PageHeading;
7571exports.Popover = Popover;
7572exports.PopoverLink = PopoverLink;
7573exports.ProgressTracker = ProgressTracker$1;
7574exports.Prompt = Prompt;
7575exports.RadioButton = RadioButton;
7576exports.RadioGroup = RadioGroup;
7577exports.ResponsiveTable = ResponsiveTable;
7578exports.SideNav = SideNav;
7579exports.SlidingPane = SlidingPane;
7580exports.Spinner = Spinner;
7581exports.StarRating = StarRating$1;
7582exports.StarRatingExplanation = StarRatingExplanation;
7583exports.StripedContainer = StripedContainer;
7584exports.StyleReset = StyleReset;
7585exports.Switch = Switch;
7586exports.TabPanel = TabPanel;
7587exports.Table = Table;
7588exports.Textarea = Textarea;
7589exports.Textbox = Textbox;
7590exports.ToggleButton = ToggleButton;
7591exports.Tooltip = Tooltip;
7592exports.generateAlphaName = generateAlphaName;
7593exports.isValidEmail = isValidEmail;
7594exports.screenReaderOnly = screenReaderOnly;
7595exports.useTheme = useTheme;
7596exports.useWindowWidth = useWindowWidth;
7597exports.withWindowSize = withWindowSize;