govuk_publishing_components 65.1.0 → 65.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/component_guide/application.scss +13 -15
  3. data/app/assets/stylesheets/govuk_publishing_components/all-components.scss +0 -1
  4. data/app/assets/stylesheets/govuk_publishing_components/components/_contents-list.scss +25 -0
  5. data/app/assets/stylesheets/govuk_publishing_components/components/_details.scss +34 -0
  6. data/app/assets/stylesheets/govuk_publishing_components/components/_heading.scss +1 -0
  7. data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_markdown-typography.scss +4 -0
  8. data/app/assets/stylesheets/govuk_publishing_components/specific-components.scss +0 -1
  9. data/app/controllers/govuk_publishing_components/applications_page_controller.rb +1 -1
  10. data/app/controllers/govuk_publishing_components/audit_controller.rb +0 -1
  11. data/app/models/govuk_publishing_components/component_doc.rb +10 -3
  12. data/app/models/govuk_publishing_components/component_wrapper_helper_options.rb +4 -2
  13. data/app/views/govuk_publishing_components/component_guide/component_doc/_component.html.erb +1 -1
  14. data/app/views/govuk_publishing_components/component_guide/component_doc/_preview.html.erb +2 -2
  15. data/app/views/govuk_publishing_components/component_guide/show.html.erb +47 -33
  16. data/app/views/govuk_publishing_components/components/_details.html.erb +4 -0
  17. data/app/views/govuk_publishing_components/components/_devolved_nations.html.erb +2 -2
  18. data/app/views/govuk_publishing_components/components/_option_select.html.erb +2 -2
  19. data/app/views/govuk_publishing_components/components/docs/details.yml +16 -0
  20. data/lib/govuk_publishing_components/presenters/devolved_nations_helper.rb +13 -7
  21. data/lib/govuk_publishing_components/version.rb +1 -1
  22. data/node_modules/choices.js/README.md +140 -30
  23. data/node_modules/choices.js/package.json +10 -13
  24. data/node_modules/choices.js/public/assets/scripts/choices.js +144 -89
  25. data/node_modules/choices.js/public/assets/scripts/choices.min.js +2 -2
  26. data/node_modules/choices.js/public/assets/scripts/choices.mjs +144 -89
  27. data/node_modules/choices.js/public/assets/scripts/choices.search-basic.js +144 -86
  28. data/node_modules/choices.js/public/assets/scripts/choices.search-basic.min.js +2 -2
  29. data/node_modules/choices.js/public/assets/scripts/choices.search-basic.mjs +144 -86
  30. data/node_modules/choices.js/public/assets/scripts/choices.search-kmp.js +139 -77
  31. data/node_modules/choices.js/public/assets/scripts/choices.search-kmp.min.js +2 -2
  32. data/node_modules/choices.js/public/assets/scripts/choices.search-kmp.mjs +139 -77
  33. data/node_modules/choices.js/public/assets/scripts/choices.search-prefix.js +137 -76
  34. data/node_modules/choices.js/public/assets/scripts/choices.search-prefix.min.js +2 -2
  35. data/node_modules/choices.js/public/assets/scripts/choices.search-prefix.mjs +137 -76
  36. data/node_modules/choices.js/public/assets/styles/base.css +39 -9
  37. data/node_modules/choices.js/public/assets/styles/base.css.map +1 -1
  38. data/node_modules/choices.js/public/assets/styles/base.min.css +1 -1
  39. data/node_modules/choices.js/public/assets/styles/choices.css +93 -95
  40. data/node_modules/choices.js/public/assets/styles/choices.css.map +1 -1
  41. data/node_modules/choices.js/public/assets/styles/choices.min.css +1 -1
  42. data/node_modules/choices.js/public/types/src/scripts/choices.d.ts +11 -0
  43. data/node_modules/choices.js/public/types/src/scripts/components/container.d.ts +2 -0
  44. data/node_modules/choices.js/public/types/src/scripts/interfaces/choice-full.d.ts +2 -1
  45. data/node_modules/choices.js/public/types/src/scripts/interfaces/class-names.d.ts +2 -0
  46. data/node_modules/choices.js/public/types/src/scripts/interfaces/input-choice.d.ts +2 -1
  47. data/node_modules/choices.js/public/types/src/scripts/interfaces/options.d.ts +19 -3
  48. data/node_modules/choices.js/public/types/src/scripts/interfaces/store.d.ts +2 -1
  49. data/node_modules/choices.js/public/types/src/scripts/interfaces/types.d.ts +2 -1
  50. data/node_modules/choices.js/public/types/src/scripts/lib/utils.d.ts +3 -1
  51. data/node_modules/choices.js/src/scripts/choices.ts +110 -64
  52. data/node_modules/choices.js/src/scripts/components/container.ts +8 -0
  53. data/node_modules/choices.js/src/scripts/components/wrapped-select.ts +3 -1
  54. data/node_modules/choices.js/src/scripts/defaults.ts +12 -7
  55. data/node_modules/choices.js/src/scripts/interfaces/choice-full.ts +2 -1
  56. data/node_modules/choices.js/src/scripts/interfaces/class-names.ts +2 -0
  57. data/node_modules/choices.js/src/scripts/interfaces/event-choice.ts +1 -0
  58. data/node_modules/choices.js/src/scripts/interfaces/input-choice.ts +4 -2
  59. data/node_modules/choices.js/src/scripts/interfaces/options.ts +21 -3
  60. data/node_modules/choices.js/src/scripts/interfaces/store.ts +2 -1
  61. data/node_modules/choices.js/src/scripts/interfaces/types.ts +3 -1
  62. data/node_modules/choices.js/src/scripts/lib/utils.ts +27 -4
  63. data/node_modules/choices.js/src/scripts/search/kmp.ts +2 -1
  64. data/node_modules/choices.js/src/scripts/store/store.ts +4 -1
  65. data/node_modules/choices.js/src/scripts/templates.ts +6 -3
  66. data/node_modules/choices.js/src/styles/base.scss +42 -9
  67. data/node_modules/choices.js/src/styles/choices.scss +119 -93
  68. metadata +2 -3
  69. data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_contents-list-helper.scss +0 -24
@@ -1,4 +1,4 @@
1
- /*! choices.js v11.1.0 | © 2025 Josh Johnson | https://github.com/jshjohnson/Choices#readme */
1
+ /*! choices.js v11.2.1 | © 2026 Josh Johnson | https://github.com/Choices-js/Choices#readme */
2
2
 
3
3
  /******************************************************************************
4
4
  Copyright (c) Microsoft Corporation.
@@ -202,9 +202,6 @@ var strToEl = (function () {
202
202
  return firstChild;
203
203
  };
204
204
  })();
205
- var resolveNoticeFunction = function (fn, value) {
206
- return typeof fn === 'function' ? fn(sanitise(value), value) : fn;
207
- };
208
205
  var resolveStringFunction = function (fn) {
209
206
  return typeof fn === 'function' ? fn() : fn;
210
207
  };
@@ -236,6 +233,26 @@ var unwrapStringForEscaped = function (s) {
236
233
  }
237
234
  return '';
238
235
  };
236
+ var getChoiceForOutput = function (choice, keyCode) {
237
+ return {
238
+ id: choice.id,
239
+ highlighted: choice.highlighted,
240
+ labelClass: choice.labelClass,
241
+ labelDescription: unwrapStringForRaw(choice.labelDescription),
242
+ customProperties: choice.customProperties,
243
+ disabled: choice.disabled,
244
+ active: choice.active,
245
+ label: choice.label,
246
+ placeholder: choice.placeholder,
247
+ value: choice.value,
248
+ groupValue: choice.group ? choice.group.label : undefined,
249
+ element: choice.element,
250
+ keyCode: keyCode,
251
+ };
252
+ };
253
+ var resolveNoticeFunction = function (fn, value, item) {
254
+ return typeof fn === 'function' ? fn(sanitise(value), unwrapStringForRaw(value), item) : fn;
255
+ };
239
256
  var escapeForTemplate = function (allowHTML, s) {
240
257
  return allowHTML ? unwrapStringForEscaped(s) : sanitise(s);
241
258
  };
@@ -403,6 +420,12 @@ var Container = /** @class */ (function () {
403
420
  Container.prototype.removeFocusState = function () {
404
421
  removeClassesFromElement(this.element, this.classNames.focusState);
405
422
  };
423
+ Container.prototype.addInvalidState = function () {
424
+ addClassesToElement(this.element, this.classNames.invalidState);
425
+ };
426
+ Container.prototype.removeInvalidState = function () {
427
+ removeClassesFromElement(this.element, this.classNames.invalidState);
428
+ };
406
429
  Container.prototype.enable = function () {
407
430
  removeClassesFromElement(this.element, this.classNames.disabledState);
408
431
  this.element.removeAttribute('aria-disabled');
@@ -868,7 +891,9 @@ var WrappedSelect = /** @class */ (function (_super) {
868
891
  highlighted: false,
869
892
  placeholder: this.extractPlaceholder && (!option.value || option.hasAttribute('placeholder')),
870
893
  labelClass: typeof option.dataset.labelClass !== 'undefined' ? stringToHtmlClass(option.dataset.labelClass) : undefined,
871
- labelDescription: typeof option.dataset.labelDescription !== 'undefined' ? option.dataset.labelDescription : undefined,
894
+ labelDescription: typeof option.dataset.labelDescription !== 'undefined'
895
+ ? { trusted: option.dataset.labelDescription }
896
+ : undefined,
872
897
  customProperties: parseCustomProperties(option.dataset.customProperties),
873
898
  };
874
899
  };
@@ -914,6 +939,7 @@ var DEFAULT_CLASSNAMES = {
914
939
  selectedState: ['is-selected'],
915
940
  flippedState: ['is-flipped'],
916
941
  loadingState: ['is-loading'],
942
+ invalidState: ['is-invalid'],
917
943
  notice: ['choices__notice'],
918
944
  addChoice: ['choices__item--selectable', 'add-choice'],
919
945
  noResults: ['has-no-results'],
@@ -941,6 +967,7 @@ var DEFAULT_CONFIG = {
941
967
  paste: true,
942
968
  searchEnabled: true,
943
969
  searchChoices: true,
970
+ searchDisabledChoices: false,
944
971
  searchFloor: 1,
945
972
  searchResultLimit: 4,
946
973
  searchFields: ['label', 'value'],
@@ -956,6 +983,7 @@ var DEFAULT_CONFIG = {
956
983
  prependValue: null,
957
984
  appendValue: null,
958
985
  renderSelectedChoices: 'auto',
986
+ searchRenderSelectedChoices: true,
959
987
  loadingText: 'Loading...',
960
988
  noResultsText: 'No results found',
961
989
  noChoicesText: 'No choices to choose from',
@@ -964,7 +992,9 @@ var DEFAULT_CONFIG = {
964
992
  customAddItemText: 'Only values matching specific conditions can be added',
965
993
  addItemText: function (value) { return "Press Enter to add <b>\"".concat(value, "\"</b>"); },
966
994
  removeItemIconText: function () { return "Remove item"; },
967
- removeItemLabelText: function (value) { return "Remove item: ".concat(value); },
995
+ removeItemLabelText: function (value, _valueRaw, i) {
996
+ return "Remove item: ".concat(i ? sanitise(i.label) : value);
997
+ },
968
998
  maxItemText: function (maxItemCount) { return "Only ".concat(maxItemCount, " values can be added"); },
969
999
  valueComparer: function (value1, value2) { return value1 === value2; },
970
1000
  fuseOptions: {
@@ -1265,7 +1295,8 @@ var Store = /** @class */ (function () {
1265
1295
  * Get choices that can be searched (excluding placeholders or disabled choices)
1266
1296
  */
1267
1297
  get: function () {
1268
- return this.choices.filter(function (choice) { return !choice.disabled && !choice.placeholder; });
1298
+ var context = this._context;
1299
+ return this.choices.filter(function (choice) { return !choice.placeholder && (context.searchDisabledChoices || !choice.disabled); });
1269
1300
  },
1270
1301
  enumerable: false,
1271
1302
  configurable: true
@@ -1378,7 +1409,7 @@ var assignCustomProperties = function (el, choice, withCustomProperties) {
1378
1409
  dataset.labelClass = getClassNames(labelClass).join(' ');
1379
1410
  }
1380
1411
  if (labelDescription) {
1381
- dataset.labelDescription = labelDescription;
1412
+ dataset.labelDescription = unwrapStringForRaw(labelDescription);
1382
1413
  }
1383
1414
  if (withCustomProperties && customProperties) {
1384
1415
  if (typeof customProperties === 'string') {
@@ -1485,8 +1516,9 @@ var templates = {
1485
1516
  var removeButton = document.createElement('button');
1486
1517
  removeButton.type = 'button';
1487
1518
  addClassesToElement(removeButton, button);
1488
- setElementHtml(removeButton, true, resolveNoticeFunction(removeItemIconText, choice.value));
1489
- var REMOVE_ITEM_LABEL = resolveNoticeFunction(removeItemLabelText, choice.value);
1519
+ var eventChoice = getChoiceForOutput(choice);
1520
+ setElementHtml(removeButton, true, resolveNoticeFunction(removeItemIconText, choice.value, eventChoice));
1521
+ var REMOVE_ITEM_LABEL = resolveNoticeFunction(removeItemLabelText, choice.value, eventChoice);
1490
1522
  if (REMOVE_ITEM_LABEL) {
1491
1523
  removeButton.setAttribute('aria-label', REMOVE_ITEM_LABEL);
1492
1524
  }
@@ -1591,6 +1623,7 @@ var templates = {
1591
1623
  else {
1592
1624
  addClassesToElement(div, itemSelectable);
1593
1625
  div.dataset.choiceSelectable = '';
1626
+ div.setAttribute('aria-selected', choice.selected ? 'true' : 'false');
1594
1627
  }
1595
1628
  return div;
1596
1629
  },
@@ -1760,7 +1793,7 @@ var Choices = /** @class */ (function () {
1760
1793
  this.initialised = false;
1761
1794
  this._store = new Store(config);
1762
1795
  this._currentValue = '';
1763
- config.searchEnabled = (!isText && config.searchEnabled) || isSelectMultiple;
1796
+ config.searchEnabled = !isText && config.searchEnabled;
1764
1797
  this._canSearch = config.searchEnabled;
1765
1798
  this._isScrollingOnIe = false;
1766
1799
  this._highlightPosition = 0;
@@ -1800,6 +1833,8 @@ var Choices = /** @class */ (function () {
1800
1833
  this._onEscapeKey = this._onEscapeKey.bind(this);
1801
1834
  this._onDirectionKey = this._onDirectionKey.bind(this);
1802
1835
  this._onDeleteKey = this._onDeleteKey.bind(this);
1836
+ this._onChange = this._onChange.bind(this);
1837
+ this._onInvalid = this._onInvalid.bind(this);
1803
1838
  // If element has already been initialised with Choices, fail silently
1804
1839
  if (this.passedElement.isActive) {
1805
1840
  if (!config.silent) {
@@ -1906,7 +1941,7 @@ var Choices = /** @class */ (function () {
1906
1941
  }
1907
1942
  this._store.dispatch(highlightItem(choice, true));
1908
1943
  if (runEvent) {
1909
- this.passedElement.triggerEvent(EventType.highlightItem, this._getChoiceForOutput(choice));
1944
+ this.passedElement.triggerEvent(EventType.highlightItem, getChoiceForOutput(choice));
1910
1945
  }
1911
1946
  return this;
1912
1947
  };
@@ -1921,7 +1956,7 @@ var Choices = /** @class */ (function () {
1921
1956
  }
1922
1957
  this._store.dispatch(highlightItem(choice, false));
1923
1958
  if (runEvent) {
1924
- this.passedElement.triggerEvent(EventType.unhighlightItem, this._getChoiceForOutput(choice));
1959
+ this.passedElement.triggerEvent(EventType.unhighlightItem, getChoiceForOutput(choice));
1925
1960
  }
1926
1961
  return this;
1927
1962
  };
@@ -1931,7 +1966,7 @@ var Choices = /** @class */ (function () {
1931
1966
  _this._store.items.forEach(function (item) {
1932
1967
  if (!item.highlighted) {
1933
1968
  _this._store.dispatch(highlightItem(item, true));
1934
- _this.passedElement.triggerEvent(EventType.highlightItem, _this._getChoiceForOutput(item));
1969
+ _this.passedElement.triggerEvent(EventType.highlightItem, getChoiceForOutput(item));
1935
1970
  }
1936
1971
  });
1937
1972
  });
@@ -1943,7 +1978,7 @@ var Choices = /** @class */ (function () {
1943
1978
  _this._store.items.forEach(function (item) {
1944
1979
  if (item.highlighted) {
1945
1980
  _this._store.dispatch(highlightItem(item, false));
1946
- _this.passedElement.triggerEvent(EventType.highlightItem, _this._getChoiceForOutput(item));
1981
+ _this.passedElement.triggerEvent(EventType.highlightItem, getChoiceForOutput(item));
1947
1982
  }
1948
1983
  });
1949
1984
  });
@@ -1998,6 +2033,11 @@ var Choices = /** @class */ (function () {
1998
2033
  _this.input.focus();
1999
2034
  }
2000
2035
  _this.passedElement.triggerEvent(EventType.showDropdown);
2036
+ var activeElement = _this.choiceList.element.querySelector(getClassNamesSelector(_this.config.classNames.selectedState));
2037
+ if (activeElement !== null && !isScrolledIntoView(activeElement, _this.choiceList.element)) {
2038
+ // We use the native scrollIntoView function instead of choiceList.scrollToChildElement to avoid animated scroll.
2039
+ activeElement.scrollIntoView();
2040
+ }
2001
2041
  });
2002
2042
  return this;
2003
2043
  };
@@ -2006,6 +2046,7 @@ var Choices = /** @class */ (function () {
2006
2046
  if (!this.dropdown.isActive) {
2007
2047
  return this;
2008
2048
  }
2049
+ this._removeHighlightedChoices();
2009
2050
  requestAnimationFrame(function () {
2010
2051
  _this.dropdown.hide();
2011
2052
  _this.containerOuter.close();
@@ -2018,9 +2059,8 @@ var Choices = /** @class */ (function () {
2018
2059
  return this;
2019
2060
  };
2020
2061
  Choices.prototype.getValue = function (valueOnly) {
2021
- var _this = this;
2022
2062
  var values = this._store.items.map(function (item) {
2023
- return (valueOnly ? item.value : _this._getChoiceForOutput(item));
2063
+ return (valueOnly ? item.value : getChoiceForOutput(item));
2024
2064
  });
2025
2065
  return this._isSelectOneElement || this.config.singleModeForMultiSelect ? values[0] : values;
2026
2066
  };
@@ -2278,7 +2318,7 @@ var Choices = /** @class */ (function () {
2278
2318
  // @todo integrate with Store
2279
2319
  this._searcher.reset();
2280
2320
  if (choice.selected) {
2281
- this.passedElement.triggerEvent(EventType.removeItem, this._getChoiceForOutput(choice));
2321
+ this.passedElement.triggerEvent(EventType.removeItem, getChoiceForOutput(choice));
2282
2322
  }
2283
2323
  return this;
2284
2324
  };
@@ -2361,13 +2401,7 @@ var Choices = /** @class */ (function () {
2361
2401
  }
2362
2402
  var _a = this, config = _a.config, isSearching = _a._isSearching;
2363
2403
  var _b = this._store, activeGroups = _b.activeGroups, activeChoices = _b.activeChoices;
2364
- var renderLimit = 0;
2365
- if (isSearching && config.searchResultLimit > 0) {
2366
- renderLimit = config.searchResultLimit;
2367
- }
2368
- else if (config.renderChoiceLimit > 0) {
2369
- renderLimit = config.renderChoiceLimit;
2370
- }
2404
+ var renderLimit = isSearching ? config.searchResultLimit : config.renderChoiceLimit;
2371
2405
  if (this._isSelectElement) {
2372
2406
  var backingOptions = activeChoices.filter(function (choice) { return !choice.element; });
2373
2407
  if (backingOptions.length) {
@@ -2377,11 +2411,16 @@ var Choices = /** @class */ (function () {
2377
2411
  var fragment = document.createDocumentFragment();
2378
2412
  var renderableChoices = function (choices) {
2379
2413
  return choices.filter(function (choice) {
2380
- return !choice.placeholder && (isSearching ? !!choice.rank : config.renderSelectedChoices || !choice.selected);
2414
+ return !choice.placeholder &&
2415
+ (isSearching
2416
+ ? (config.searchRenderSelectedChoices || !choice.selected) && !!choice.rank
2417
+ : config.renderSelectedChoices || !choice.selected);
2381
2418
  });
2382
2419
  };
2420
+ var showLabel = config.appendGroupInSearch && isSearching;
2383
2421
  var selectableChoices = false;
2384
- var renderChoices = function (choices, withinGroup, groupLabel) {
2422
+ var highlightedEl = null;
2423
+ var renderChoices = function (choices, withinGroup) {
2385
2424
  if (isSearching) {
2386
2425
  // sortByRank is used to ensure stable sorting, as scores are non-unique
2387
2426
  // this additionally ensures fuseOptions.sortFn is not ignored
@@ -2391,16 +2430,20 @@ var Choices = /** @class */ (function () {
2391
2430
  choices.sort(config.sorter);
2392
2431
  }
2393
2432
  var choiceLimit = choices.length;
2394
- choiceLimit = !withinGroup && renderLimit && choiceLimit > renderLimit ? renderLimit : choiceLimit;
2433
+ choiceLimit = !withinGroup && renderLimit > 0 && choiceLimit > renderLimit ? renderLimit : choiceLimit;
2395
2434
  choiceLimit--;
2396
2435
  choices.every(function (choice, index) {
2397
2436
  // choiceEl being empty signals the contents has probably significantly changed
2398
- var dropdownItem = choice.choiceEl || _this._templates.choice(config, choice, config.itemSelectText, groupLabel);
2437
+ var dropdownItem = choice.choiceEl ||
2438
+ _this._templates.choice(config, choice, config.itemSelectText, showLabel && choice.group ? choice.group.label : undefined);
2399
2439
  choice.choiceEl = dropdownItem;
2400
2440
  fragment.appendChild(dropdownItem);
2401
2441
  if (isSearching || !choice.selected) {
2402
2442
  selectableChoices = true;
2403
2443
  }
2444
+ else if (!highlightedEl) {
2445
+ highlightedEl = dropdownItem;
2446
+ }
2404
2447
  return index < choiceLimit;
2405
2448
  });
2406
2449
  };
@@ -2410,7 +2453,7 @@ var Choices = /** @class */ (function () {
2410
2453
  }
2411
2454
  if (!this._hasNonChoicePlaceholder && !isSearching && this._isSelectOneElement) {
2412
2455
  // If we have a placeholder choice along with groups
2413
- renderChoices(activeChoices.filter(function (choice) { return choice.placeholder && !choice.group; }), false, undefined);
2456
+ renderChoices(activeChoices.filter(function (choice) { return choice.placeholder && !choice.group; }), false);
2414
2457
  }
2415
2458
  // If we have grouped options
2416
2459
  if (activeGroups.length && !isSearching) {
@@ -2419,7 +2462,7 @@ var Choices = /** @class */ (function () {
2419
2462
  }
2420
2463
  // render Choices without group first, regardless of sort, otherwise they won't be distinguishable
2421
2464
  // from the last group
2422
- renderChoices(activeChoices.filter(function (choice) { return !choice.placeholder && !choice.group; }), false, undefined);
2465
+ renderChoices(activeChoices.filter(function (choice) { return !choice.placeholder && !choice.group; }), false);
2423
2466
  activeGroups.forEach(function (group) {
2424
2467
  var groupChoices = renderableChoices(group.choices);
2425
2468
  if (groupChoices.length) {
@@ -2429,12 +2472,12 @@ var Choices = /** @class */ (function () {
2429
2472
  dropdownGroup.remove();
2430
2473
  fragment.appendChild(dropdownGroup);
2431
2474
  }
2432
- renderChoices(groupChoices, true, config.appendGroupInSearch && isSearching ? group.label : undefined);
2475
+ renderChoices(groupChoices, true);
2433
2476
  }
2434
2477
  });
2435
2478
  }
2436
2479
  else {
2437
- renderChoices(renderableChoices(activeChoices), false, undefined);
2480
+ renderChoices(renderableChoices(activeChoices), false);
2438
2481
  }
2439
2482
  }
2440
2483
  if (!selectableChoices && (isSearching || !fragment.children.length || !config.renderSelectedChoices)) {
@@ -2448,9 +2491,7 @@ var Choices = /** @class */ (function () {
2448
2491
  }
2449
2492
  this._renderNotice(fragment);
2450
2493
  this.choiceList.element.replaceChildren(fragment);
2451
- if (selectableChoices) {
2452
- this._highlightChoice();
2453
- }
2494
+ this._highlightChoice(highlightedEl);
2454
2495
  };
2455
2496
  Choices.prototype._renderItems = function () {
2456
2497
  var _this = this;
@@ -2560,23 +2601,12 @@ var Choices = /** @class */ (function () {
2560
2601
  }
2561
2602
  }
2562
2603
  };
2604
+ /**
2605
+ * @deprecated Use utils.getChoiceForOutput
2606
+ */
2563
2607
  // eslint-disable-next-line class-methods-use-this
2564
2608
  Choices.prototype._getChoiceForOutput = function (choice, keyCode) {
2565
- return {
2566
- id: choice.id,
2567
- highlighted: choice.highlighted,
2568
- labelClass: choice.labelClass,
2569
- labelDescription: choice.labelDescription,
2570
- customProperties: choice.customProperties,
2571
- disabled: choice.disabled,
2572
- active: choice.active,
2573
- label: choice.label,
2574
- placeholder: choice.placeholder,
2575
- value: choice.value,
2576
- groupValue: choice.group ? choice.group.label : undefined,
2577
- element: choice.element,
2578
- keyCode: keyCode,
2579
- };
2609
+ return getChoiceForOutput(choice, keyCode);
2580
2610
  };
2581
2611
  Choices.prototype._triggerChange = function (value) {
2582
2612
  if (value === undefined || value === null) {
@@ -2592,7 +2622,7 @@ var Choices = /** @class */ (function () {
2592
2622
  if (!items.length || !this.config.removeItems || !this.config.removeItemButton) {
2593
2623
  return;
2594
2624
  }
2595
- var id = element && parseDataSetId(element.parentElement);
2625
+ var id = element && parseDataSetId(element.closest('[data-id]'));
2596
2626
  var itemToRemove = id && items.find(function (item) { return item.id === id; });
2597
2627
  if (!itemToRemove) {
2598
2628
  return;
@@ -2781,7 +2811,7 @@ var Choices = /** @class */ (function () {
2781
2811
  var notice = '';
2782
2812
  if (canAddItem && typeof config.addItemFilter === 'function' && !config.addItemFilter(value)) {
2783
2813
  canAddItem = false;
2784
- notice = resolveNoticeFunction(config.customAddItemText, value);
2814
+ notice = resolveNoticeFunction(config.customAddItemText, value, undefined);
2785
2815
  }
2786
2816
  if (canAddItem) {
2787
2817
  var foundChoice = this._store.choices.find(function (choice) { return config.valueComparer(choice.value, value); });
@@ -2793,12 +2823,12 @@ var Choices = /** @class */ (function () {
2793
2823
  }
2794
2824
  if (!config.duplicateItemsAllowed) {
2795
2825
  canAddItem = false;
2796
- notice = resolveNoticeFunction(config.uniqueItemText, value);
2826
+ notice = resolveNoticeFunction(config.uniqueItemText, value, undefined);
2797
2827
  }
2798
2828
  }
2799
2829
  }
2800
2830
  if (canAddItem) {
2801
- notice = resolveNoticeFunction(config.addItemText, value);
2831
+ notice = resolveNoticeFunction(config.addItemText, value, undefined);
2802
2832
  }
2803
2833
  if (notice) {
2804
2834
  this._displayNotice(notice, NoticeTypes.addChoice);
@@ -2849,6 +2879,7 @@ var Choices = /** @class */ (function () {
2849
2879
  var documentElement = this._docRoot;
2850
2880
  var outerElement = this.containerOuter.element;
2851
2881
  var inputElement = this.input.element;
2882
+ var passedElement = this.passedElement.element;
2852
2883
  // capture events - can cancel event processing or propagation
2853
2884
  documentElement.addEventListener('touchend', this._onTouchEnd, true);
2854
2885
  outerElement.addEventListener('keydown', this._onKeyDown, true);
@@ -2886,12 +2917,21 @@ var Choices = /** @class */ (function () {
2886
2917
  passive: true,
2887
2918
  });
2888
2919
  }
2920
+ if (passedElement.hasAttribute('required')) {
2921
+ passedElement.addEventListener('change', this._onChange, {
2922
+ passive: true,
2923
+ });
2924
+ passedElement.addEventListener('invalid', this._onInvalid, {
2925
+ passive: true,
2926
+ });
2927
+ }
2889
2928
  this.input.addEventListeners();
2890
2929
  };
2891
2930
  Choices.prototype._removeEventListeners = function () {
2892
2931
  var documentElement = this._docRoot;
2893
2932
  var outerElement = this.containerOuter.element;
2894
2933
  var inputElement = this.input.element;
2934
+ var passedElement = this.passedElement.element;
2895
2935
  documentElement.removeEventListener('touchend', this._onTouchEnd, true);
2896
2936
  outerElement.removeEventListener('keydown', this._onKeyDown, true);
2897
2937
  outerElement.removeEventListener('mousedown', this._onMouseDown, true);
@@ -2909,6 +2949,10 @@ var Choices = /** @class */ (function () {
2909
2949
  if (inputElement.form) {
2910
2950
  inputElement.form.removeEventListener('reset', this._onFormReset);
2911
2951
  }
2952
+ if (passedElement.hasAttribute('required')) {
2953
+ passedElement.removeEventListener('change', this._onChange);
2954
+ passedElement.removeEventListener('invalid', this._onInvalid);
2955
+ }
2912
2956
  this.input.removeEventListeners();
2913
2957
  };
2914
2958
  Choices.prototype._onKeyDown = function (event) {
@@ -3158,7 +3202,7 @@ var Choices = /** @class */ (function () {
3158
3202
  */
3159
3203
  Choices.prototype._onMouseDown = function (event) {
3160
3204
  var target = event.target;
3161
- if (!(target instanceof HTMLElement)) {
3205
+ if (!(target instanceof Element)) {
3162
3206
  return;
3163
3207
  }
3164
3208
  // If we have our mouse down on the scrollbar and are on IE11...
@@ -3267,7 +3311,7 @@ var Choices = /** @class */ (function () {
3267
3311
  // Remove the focus state when the past outerContainer was the target
3268
3312
  containerOuter.removeFocusState();
3269
3313
  // Also close the dropdown if search is disabled
3270
- if (!this._canSearch) {
3314
+ if (!this.config.searchEnabled) {
3271
3315
  this.hideDropdown(true);
3272
3316
  }
3273
3317
  }
@@ -3291,13 +3335,19 @@ var Choices = /** @class */ (function () {
3291
3335
  }
3292
3336
  });
3293
3337
  };
3294
- Choices.prototype._highlightChoice = function (el) {
3295
- if (el === void 0) { el = null; }
3296
- var choices = Array.from(this.dropdown.element.querySelectorAll(selectableChoiceIdentifier));
3297
- if (!choices.length) {
3338
+ Choices.prototype._onChange = function (event) {
3339
+ if (!event.target.checkValidity()) {
3298
3340
  return;
3299
3341
  }
3300
- var passedEl = el;
3342
+ this.containerOuter.removeInvalidState();
3343
+ };
3344
+ Choices.prototype._onInvalid = function () {
3345
+ this.containerOuter.addInvalidState();
3346
+ };
3347
+ /**
3348
+ * Removes any highlighted choice options
3349
+ */
3350
+ Choices.prototype._removeHighlightedChoices = function () {
3301
3351
  var highlightedState = this.config.classNames.highlightedState;
3302
3352
  var highlightedChoices = Array.from(this.dropdown.element.querySelectorAll(getClassNamesSelector(highlightedState)));
3303
3353
  // Remove any highlighted choices
@@ -3305,6 +3355,16 @@ var Choices = /** @class */ (function () {
3305
3355
  removeClassesFromElement(choice, highlightedState);
3306
3356
  choice.setAttribute('aria-selected', 'false');
3307
3357
  });
3358
+ };
3359
+ Choices.prototype._highlightChoice = function (el) {
3360
+ if (el === void 0) { el = null; }
3361
+ var choices = Array.from(this.dropdown.element.querySelectorAll(selectableChoiceIdentifier));
3362
+ if (!choices.length) {
3363
+ return;
3364
+ }
3365
+ var passedEl = el;
3366
+ var highlightedState = this.config.classNames.highlightedState;
3367
+ this._removeHighlightedChoices();
3308
3368
  if (passedEl) {
3309
3369
  this._highlightPosition = choices.indexOf(passedEl);
3310
3370
  }
@@ -3345,9 +3405,10 @@ var Choices = /** @class */ (function () {
3345
3405
  }
3346
3406
  this._store.dispatch(addItem(item));
3347
3407
  if (withEvents) {
3348
- this.passedElement.triggerEvent(EventType.addItem, this._getChoiceForOutput(item));
3408
+ var eventChoice = getChoiceForOutput(item);
3409
+ this.passedElement.triggerEvent(EventType.addItem, eventChoice);
3349
3410
  if (userTriggered) {
3350
- this.passedElement.triggerEvent(EventType.choice, this._getChoiceForOutput(item));
3411
+ this.passedElement.triggerEvent(EventType.choice, eventChoice);
3351
3412
  }
3352
3413
  }
3353
3414
  };
@@ -3360,7 +3421,7 @@ var Choices = /** @class */ (function () {
3360
3421
  if (notice && notice.type === NoticeTypes.noChoices) {
3361
3422
  this._clearNotice();
3362
3423
  }
3363
- this.passedElement.triggerEvent(EventType.removeItem, this._getChoiceForOutput(item));
3424
+ this.passedElement.triggerEvent(EventType.removeItem, getChoiceForOutput(item));
3364
3425
  };
3365
3426
  Choices.prototype._addChoice = function (choice, withEvents, userTriggered) {
3366
3427
  if (withEvents === void 0) { withEvents = true; }
@@ -3475,25 +3536,25 @@ var Choices = /** @class */ (function () {
3475
3536
  containerInner.wrap(passedElement.element);
3476
3537
  // Wrapper inner container with outer container
3477
3538
  containerOuter.wrap(containerInner.element);
3539
+ containerOuter.element.appendChild(containerInner.element);
3540
+ containerOuter.element.appendChild(dropdownElement);
3541
+ containerInner.element.appendChild(this.itemList.element);
3542
+ dropdownElement.appendChild(this.choiceList.element);
3478
3543
  if (this._isSelectOneElement) {
3479
3544
  this.input.placeholder = this.config.searchPlaceholderValue || '';
3545
+ if (this.config.searchEnabled) {
3546
+ dropdownElement.insertBefore(this.input.element, dropdownElement.firstChild);
3547
+ }
3480
3548
  }
3481
3549
  else {
3550
+ if (!this._isSelectMultipleElement || this.config.searchEnabled) {
3551
+ containerInner.element.appendChild(this.input.element);
3552
+ }
3482
3553
  if (this._placeholderValue) {
3483
3554
  this.input.placeholder = this._placeholderValue;
3484
3555
  }
3485
3556
  this.input.setWidth();
3486
3557
  }
3487
- containerOuter.element.appendChild(containerInner.element);
3488
- containerOuter.element.appendChild(dropdownElement);
3489
- containerInner.element.appendChild(this.itemList.element);
3490
- dropdownElement.appendChild(this.choiceList.element);
3491
- if (!this._isSelectOneElement) {
3492
- containerInner.element.appendChild(this.input.element);
3493
- }
3494
- else if (this.config.searchEnabled) {
3495
- dropdownElement.insertBefore(this.input.element, dropdownElement.firstChild);
3496
- }
3497
3558
  this._highlightPosition = 0;
3498
3559
  this._isSearching = false;
3499
3560
  };
@@ -3575,7 +3636,7 @@ var Choices = /** @class */ (function () {
3575
3636
  throw new TypeError("".concat(caller, " called for an element which has multiple instances of Choices initialised on it"));
3576
3637
  }
3577
3638
  };
3578
- Choices.version = '11.1.0';
3639
+ Choices.version = '11.2.1';
3579
3640
  return Choices;
3580
3641
  }());
3581
3642
 
@@ -1,6 +1,36 @@
1
1
  /* =============================================
2
2
  = Generic styling =
3
3
  ============================================= */
4
+ :root {
5
+ --color-primary: #005F75;
6
+ }
7
+
8
+ @media (prefers-color-scheme: dark) {
9
+ :root {
10
+ /* Demo defaults */
11
+ --body-bg: #272a2b;
12
+ --text-color: #cacaca;
13
+ --color-primary: #38daff;
14
+ --section-bg: #181a1b;
15
+ --section-color: #cacaca;
16
+ --hr-border: #373a3d;
17
+ --choices-primary-color: #38daff;
18
+ --choices-item-color: black;
19
+ --choices-bg-color: #101010;
20
+ --choices-bg-color-dropdown: #101010;
21
+ --choices-keyline-color: #3b3e40;
22
+ --choices-bg-color-disabled: #181a1b;
23
+ --choices-item-disabled-color: #eee;
24
+ --choices-disabled-color: #2d2d2d;
25
+ --choices-highlighted-color: #16292d;
26
+ --choices-icon-cross: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==");
27
+ --choices-icon-cross-inverse: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==");
28
+ color-scheme: dark;
29
+ }
30
+ input, select {
31
+ color: #fff;
32
+ }
33
+ }
4
34
  * {
5
35
  -webkit-font-smoothing: antialiased;
6
36
  -moz-osx-font-smoothing: grayscale;
@@ -24,8 +54,8 @@ body {
24
54
  font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
25
55
  font-size: 16px;
26
56
  line-height: 1.4;
27
- color: #fff;
28
- background-color: #333;
57
+ color: var(--text-color, #fff);
58
+ background-color: var(--body-bg, #333);
29
59
  overflow-x: hidden;
30
60
  }
31
61
 
@@ -46,7 +76,7 @@ hr {
46
76
  display: block;
47
77
  margin: 30px 0;
48
78
  border: 0;
49
- border-bottom: 1px solid #eaeaea;
79
+ border-bottom: 1px solid var(--hr-border, #eaeaea);
50
80
  height: 1px;
51
81
  }
52
82
 
@@ -65,7 +95,7 @@ h6 {
65
95
  a,
66
96
  a:visited,
67
97
  a:focus {
68
- color: #fff;
98
+ color: var(--link-color, #fff);
69
99
  text-decoration: none;
70
100
  font-weight: 600;
71
101
  }
@@ -73,9 +103,9 @@ a:focus {
73
103
  .form-control {
74
104
  display: block;
75
105
  width: 100%;
76
- background-color: #f9f9f9;
106
+ background-color: var(--form-bg, #f9f9f9);
77
107
  padding: 12px;
78
- border: 1px solid #ddd;
108
+ border: 1px solid var(--form-boder, #ddd);
79
109
  border-radius: 2.5px;
80
110
  font-size: 14px;
81
111
  appearance: none;
@@ -129,14 +159,14 @@ label + p {
129
159
  }
130
160
 
131
161
  .section {
132
- background-color: #fff;
162
+ background-color: var(--section-bg, #fff);
133
163
  padding: 24px;
134
- color: #333;
164
+ color: var(--section-color, #333);
135
165
  }
136
166
  .section a,
137
167
  .section a:visited,
138
168
  .section a:focus {
139
- color: #005F75;
169
+ color: var(--link-color-section, var(--color-primary));
140
170
  }
141
171
 
142
172
  .logo {
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../src/styles/base.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAYA;EACE;EACA;;;AAGF;AAAA;AAAA;EAGE;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAtFiB;;;AAyFnB;AAAA;EAEE,WA1FoB;;;AA6FtB;AAAA;EAEE,WA9FoB;;;AAiGtB;AAAA;EAEE,WAlGoB;;;AAqGtB;AAAA;EAEE,WAtGoB;;;AAyGtB;AAAA;EAEE,WA1GoB;;;AA6GtB;AAAA;EAEE,WA9GoB;;;AAiHtB;EACE;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EANF;IAOI;;;;AAIJ;EACE;EACA,SAxIiB;EAyIjB;;AAEA;AAAA;AAAA;EAGE;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE,eArKiB;;;AAwKnB;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,eArLiB;;;AAwLnB","file":"base.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../../src/styles/base.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAIA;EACE;;;AAGF;EACE;AACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;;EAGF;IACE;;;AAYJ;EACE;EACA;;;AAGF;AAAA;AAAA;EAGE;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;EAGE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAtFiB;;;AAyFnB;AAAA;EAEE,WA1FoB;;;AA6FtB;AAAA;EAEE,WA9FoB;;;AAiGtB;AAAA;EAEE,WAlGoB;;;AAqGtB;AAAA;EAEE,WAtGoB;;;AAyGtB;AAAA;EAEE,WA1GoB;;;AA6GtB;AAAA;EAEE,WA9GoB;;;AAiHtB;EACE;;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EANF;IAOI;;;;AAIJ;EACE;EACA,SAxIiB;EAyIjB;;AAEA;AAAA;AAAA;EAGE;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE,eArKiB;;;AAwKnB;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE,eArLiB;;;AAwLnB","file":"base.css"}
@@ -1 +1 @@
1
- *{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,::after,::before{box-sizing:border-box}body,html{position:relative;margin:0;width:100%;height:100%}body{font-family:"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:16px;line-height:1.4;color:#fff;background-color:#333;overflow-x:hidden}hr,label{display:block}label,p{margin-bottom:8px}label{font-size:14px;font-weight:500;cursor:pointer}p{margin-top:0}hr{margin:30px 0;border:0;border-bottom:1px solid #eaeaea;height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:12px;font-weight:400;line-height:1.2}a,a:focus,a:visited{color:#fff;text-decoration:none;font-weight:600}.form-control{display:block;width:100%;background-color:#f9f9f9;padding:12px;border:1px solid #ddd;border-radius:2.5px;font-size:14px;appearance:none;margin-bottom:24px}.h1,h1{font-size:32px}.h2,h2{font-size:24px}.h3,h3{font-size:20px}.h4,h4{font-size:18px}.h5,h5{font-size:16px}.h6,h6{font-size:14px}label+p{margin-top:-4px}.container{display:block;margin:auto;max-width:40em;padding:48px}@media (max-width:620px){.container{padding:0}}.section{background-color:#fff;padding:24px;color:#333}.section a,.section a:focus,.section a:visited{color:#005f75}.logo{display:block;margin-bottom:12px}.logo-img{width:100%;height:auto;display:inline-block;max-width:100%;vertical-align:top;padding:6px 0}.visible-ie{display:none}.push-bottom{margin-bottom:24px}.zero-bottom{margin-bottom:0}.zero-top{margin-top:0}.text-center{text-align:center}[data-test-hook]{margin-bottom:24px}
1
+ :root{--color-primary:#005F75}@media (prefers-color-scheme:dark){:root{--body-bg:#272a2b;--text-color:#cacaca;--color-primary:#38daff;--section-bg:#181a1b;--section-color:#cacaca;--hr-border:#373a3d;--choices-primary-color:#38daff;--choices-item-color:black;--choices-bg-color:#101010;--choices-bg-color-dropdown:#101010;--choices-keyline-color:#3b3e40;--choices-bg-color-disabled:#181a1b;--choices-item-disabled-color:#eee;--choices-disabled-color:#2d2d2d;--choices-highlighted-color:#16292d;--choices-icon-cross:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==");--choices-icon-cross-inverse:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==");color-scheme:dark}input,select{color:#fff}}*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,::after,::before{box-sizing:border-box}body,html{position:relative;margin:0;width:100%;height:100%}body{font-family:"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:16px;line-height:1.4;color:var(--text-color, #fff);background-color:var(--body-bg, #333);overflow-x:hidden}hr,label{display:block}label,p{margin-bottom:8px}label{font-size:14px;font-weight:500;cursor:pointer}p{margin-top:0}hr{margin:30px 0;border:0;border-bottom:1px solid var(--hr-border, #eaeaea);height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:12px;font-weight:400;line-height:1.2}a,a:focus,a:visited{color:var(--link-color, #fff);text-decoration:none;font-weight:600}.form-control{display:block;width:100%;background-color:var(--form-bg, #f9f9f9);padding:12px;border:1px solid var(--form-boder, #ddd);border-radius:2.5px;font-size:14px;appearance:none;margin-bottom:24px}.h1,h1{font-size:32px}.h2,h2{font-size:24px}.h3,h3{font-size:20px}.h4,h4{font-size:18px}.h5,h5{font-size:16px}.h6,h6{font-size:14px}label+p{margin-top:-4px}.container{display:block;margin:auto;max-width:40em;padding:48px}@media (max-width:620px){.container{padding:0}}.section{background-color:var(--section-bg, #fff);padding:24px;color:var(--section-color, #333)}.section a,.section a:focus,.section a:visited{color:var(--link-color-section, var(--color-primary))}.logo{display:block;margin-bottom:12px}.logo-img{width:100%;height:auto;display:inline-block;max-width:100%;vertical-align:top;padding:6px 0}.visible-ie{display:none}.push-bottom{margin-bottom:24px}.zero-bottom{margin-bottom:0}.zero-top{margin-top:0}.text-center{text-align:center}[data-test-hook]{margin-bottom:24px}