@thecb/components 3.5.14 → 3.5.17

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 (31) hide show
  1. package/.storybook/main.js +1 -1
  2. package/.storybook/page.js +2 -0
  3. package/.tool-versions +1 -0
  4. package/dist/index.cjs.js +116 -102
  5. package/package.json +2 -2
  6. package/src/components/atoms/breadcrumb/Breadcrumb.js +4 -1
  7. package/src/components/atoms/button-with-action/ButtonWithAction.js +2 -2
  8. package/src/components/atoms/checkbox/Checkbox.js +1 -0
  9. package/src/components/atoms/checkbox-list/CheckboxList.js +3 -1
  10. package/src/components/atoms/dropdown/Dropdown.js +4 -4
  11. package/src/components/atoms/dropdown/Dropdown.stories.js +10 -33
  12. package/src/components/atoms/form-layouts/FormInput.js +7 -4
  13. package/src/components/atoms/form-layouts/FormLayouts.stories.js +5 -5
  14. package/src/components/atoms/hamburger-button/HamburgerButton.js +4 -3
  15. package/src/components/atoms/icons/AccountsIconSmall.js +6 -13
  16. package/src/components/atoms/icons/icons.stories.js +1 -1
  17. package/src/components/atoms/layouts/Box.styled.js +1 -0
  18. package/src/components/atoms/layouts/Cluster.styled.js +5 -1
  19. package/src/components/atoms/layouts/Sidebar.styled.js +7 -1
  20. package/src/components/atoms/radio-button/RadioButton.js +1 -0
  21. package/src/components/atoms/radio-button/RadioButton.stories.js +26 -61
  22. package/src/components/atoms/toggle-switch/ToggleSwitch.js +1 -0
  23. package/src/components/atoms/toggle-switch/ToggleSwitch.stories.js +10 -51
  24. package/src/components/molecules/editable-list/EditableList.js +11 -8
  25. package/src/components/molecules/nav-menu/NavMenuDesktop.js +2 -1
  26. package/src/components/molecules/nav-menu/NavMenuMobile.js +7 -1
  27. package/src/deprecated/components/radio-button/radio-button.js +5 -1
  28. package/src/deprecated/icons/IconInvalid.js +7 -31
  29. package/src/deprecated/icons/IconNeutral.js +5 -4
  30. package/src/deprecated/icons/IconValid.js +8 -33
  31. package/src/util/general.js +10 -1
@@ -1,4 +1,4 @@
1
1
  module.exports = {
2
2
  stories: ['../src/**/*.stories.[tj]s'],
3
- addons: ['@storybook/addon-knobs/register']
3
+ addons: ['@storybook/addon-knobs/register', '@storybook/addon-a11y']
4
4
  };
@@ -1,6 +1,7 @@
1
1
  import React from "react"
2
2
  import { ThemeProvider } from "styled-components"
3
3
  import { withKnobs, select, radios, text } from "@storybook/addon-knobs";
4
+ import { withA11y } from "@storybook/addon-a11y";
4
5
  import { Provider } from 'react-redux';
5
6
  import { createStore } from "redux";
6
7
  import { Router } from "react-router-dom";
@@ -42,6 +43,7 @@ export default ({ title, Component, height, reducer = () => { }, containerMax =
42
43
  decorators: [
43
44
  themeDecorator,
44
45
  withKnobs,
46
+ withA11y,
45
47
  storyFn => (
46
48
  <Router history={history} >
47
49
  <Provider store={store}>
package/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ nodejs 10.15.3
package/dist/index.cjs.js CHANGED
@@ -6060,12 +6060,19 @@ var displayCurrency = function displayCurrency(cents) {
6060
6060
  var convertCentsToMoneyInt = function convertCentsToMoneyInt(n) {
6061
6061
  return (n / 100).toFixed(0);
6062
6062
  };
6063
+
6064
+ var createUniqueId = function createUniqueId() {
6065
+ return "_" + Math.random().toString(36).substr(2, 9);
6066
+ };
6067
+
6063
6068
  var safeChildren = function safeChildren(children) {
6064
6069
  var replacement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
6065
6070
 
6066
6071
  if (children && children instanceof Array) {
6067
6072
  return children.map(function (child) {
6068
- return !child ? replacement : child;
6073
+ return !child ? /*#__PURE__*/React__default.createElement(React.Fragment, {
6074
+ key: createUniqueId()
6075
+ }, replacement) : child;
6069
6076
  });
6070
6077
  }
6071
6078
 
@@ -6224,7 +6231,8 @@ var BoxWrapper = styled__default(function (_ref) {
6224
6231
  minWidth = _ref.minWidth,
6225
6232
  maxWidth = _ref.maxWidth,
6226
6233
  padding = _ref.padding,
6227
- props = _objectWithoutProperties(_ref, ["activeStyles", "hoverStyles", "disabledStyles", "extraStyles", "borderSize", "borderColor", "borderWidthOverride", "borderRadius", "textAlign", "boxShadow", "minHeight", "minWidth", "maxWidth", "padding"]);
6234
+ hiddenStyles = _ref.hiddenStyles,
6235
+ props = _objectWithoutProperties(_ref, ["activeStyles", "hoverStyles", "disabledStyles", "extraStyles", "borderSize", "borderColor", "borderWidthOverride", "borderRadius", "textAlign", "boxShadow", "minHeight", "minWidth", "maxWidth", "padding", "hiddenStyles"]);
6228
6236
 
6229
6237
  return /*#__PURE__*/React__default.createElement("div", props);
6230
6238
  })(_templateObject$1(), function (_ref2) {
@@ -6435,30 +6443,37 @@ function _templateObject$3() {
6435
6443
 
6436
6444
  return data;
6437
6445
  }
6438
- var ClusterWrapper = styled__default.div(_templateObject$3(), function (_ref) {
6439
- var overflow = _ref.overflow;
6446
+ /* eslint-disable no-unused-vars */
6447
+
6448
+ var ClusterWrapper = styled__default(function (_ref) {
6449
+ var overflow = _ref.overflow,
6450
+ props = _objectWithoutProperties(_ref, ["overflow"]);
6451
+
6452
+ return /*#__PURE__*/React__default.createElement("div", props);
6453
+ })(_templateObject$3(), function (_ref2) {
6454
+ var overflow = _ref2.overflow;
6440
6455
  return overflow ? "visible" : "hidden";
6441
6456
  });
6442
- var ClusterInnerWrapper = styled__default.div(_templateObject2$2(), function (_ref2) {
6443
- var nowrap = _ref2.nowrap;
6457
+ var ClusterInnerWrapper = styled__default.div(_templateObject2$2(), function (_ref3) {
6458
+ var nowrap = _ref3.nowrap;
6444
6459
  return nowrap ? "nowrap" : "wrap";
6445
- }, function (_ref3) {
6446
- var justify = _ref3.justify;
6447
- return justify;
6448
6460
  }, function (_ref4) {
6449
- var align = _ref4.align;
6450
- return align;
6461
+ var justify = _ref4.justify;
6462
+ return justify;
6451
6463
  }, function (_ref5) {
6452
- var childGap = _ref5.childGap;
6453
- return childGap;
6464
+ var align = _ref5.align;
6465
+ return align;
6454
6466
  }, function (_ref6) {
6455
- var minHeight = _ref6.minHeight;
6456
- return minHeight;
6467
+ var childGap = _ref6.childGap;
6468
+ return childGap;
6457
6469
  }, function (_ref7) {
6458
- var minWidth = _ref7.minWidth;
6459
- return minWidth;
6470
+ var minHeight = _ref7.minHeight;
6471
+ return minHeight;
6460
6472
  }, function (_ref8) {
6461
- var childGap = _ref8.childGap;
6473
+ var minWidth = _ref8.minWidth;
6474
+ return minWidth;
6475
+ }, function (_ref9) {
6476
+ var childGap = _ref9.childGap;
6462
6477
  return childGap;
6463
6478
  });
6464
6479
 
@@ -6581,25 +6596,35 @@ var SidebarWrapper = styled__default.div(_templateObject$5(), function (_ref) {
6581
6596
  var fullHeight = _ref.fullHeight;
6582
6597
  return fullHeight ? "height: 100%;" : "";
6583
6598
  });
6584
- var SidebarInnerWrapper = styled__default.div(_templateObject2$3(), function (_ref2) {
6585
- var childGap = _ref2.childGap;
6586
- return childGap;
6587
- }, function (_ref3) {
6599
+ var SidebarInnerWrapper = styled__default( // eslint-disable-next-line no-unused-vars
6600
+ function (_ref2) {
6601
+ var onRight = _ref2.onRight,
6602
+ childGap = _ref2.childGap,
6603
+ contentMinWidth = _ref2.contentMinWidth,
6604
+ minHeight = _ref2.minHeight,
6605
+ fullHeight = _ref2.fullHeight,
6606
+ props = _objectWithoutProperties(_ref2, ["onRight", "childGap", "contentMinWidth", "minHeight", "fullHeight"]);
6607
+
6608
+ return /*#__PURE__*/React__default.createElement("div", props);
6609
+ })(_templateObject2$3(), function (_ref3) {
6588
6610
  var childGap = _ref3.childGap;
6589
6611
  return childGap;
6590
6612
  }, function (_ref4) {
6591
- var width = _ref4.width;
6592
- return width ? "flex-basis: ".concat(width) : "";
6613
+ var childGap = _ref4.childGap;
6614
+ return childGap;
6593
6615
  }, function (_ref5) {
6594
- var minHeight = _ref5.minHeight;
6595
- return minHeight ? "margin-top: 0; margin-bottom: 0;" : "";
6616
+ var width = _ref5.width;
6617
+ return width ? "flex-basis: ".concat(width) : "";
6596
6618
  }, function (_ref6) {
6597
- var onRight = _ref6.onRight,
6598
- contentMinWidth = _ref6.contentMinWidth,
6599
- childGap = _ref6.childGap;
6600
- return onRight ? "> :first-child {\n flex-basis: 0;\n flex-grow: 999;\n min-width: calc(".concat(contentMinWidth, " - ").concat(childGap, ");\n }\n ") : "> :last-child {\n flex-basis: 0;\n flex-grow: 999;\n min-width: calc(".concat(contentMinWidth, " - ").concat(childGap, ");\n }");
6619
+ var minHeight = _ref6.minHeight;
6620
+ return minHeight ? "margin-top: 0; margin-bottom: 0;" : "";
6601
6621
  }, function (_ref7) {
6602
- var fullHeight = _ref7.fullHeight;
6622
+ var onRight = _ref7.onRight,
6623
+ contentMinWidth = _ref7.contentMinWidth,
6624
+ childGap = _ref7.childGap;
6625
+ return onRight ? "> :first-child {\n flex-basis: 0;\n flex-grow: 999;\n min-width: calc(".concat(contentMinWidth, " - ").concat(childGap, ");\n }\n ") : "> :last-child {\n flex-basis: 0;\n flex-grow: 999;\n min-width: calc(".concat(contentMinWidth, " - ").concat(childGap, ");\n }");
6626
+ }, function (_ref8) {
6627
+ var fullHeight = _ref8.fullHeight;
6603
6628
  return fullHeight ? "min-height: 100%;" : "";
6604
6629
  });
6605
6630
 
@@ -12610,7 +12635,7 @@ var ButtonWithAction = function ButtonWithAction(_ref) {
12610
12635
  var loadingExtraStyles = "".concat(extraStyles, "; padding-top: 0.75rem; padding-bottom: 0.75rem;");
12611
12636
  var hoverStyles = "\n outline: none;\n background-color: ".concat(themeValues.hoverBackgroundColor, ";\n border-color: ").concat(themeValues.hoverBorderColor, ";\n color: ").concat(themeValues.hoverColor, ";\n text-decoration: ").concat(variant === "ghost" || variant === "smallGhost" ? "underline" : "none", ";\n ");
12612
12637
  var activeStyles = "\n outline: none;\n background-color: ".concat(themeValues.activeBackgroundColor, ";\n border-color: ").concat(themeValues.activeBorderColor, ";\n color: ").concat(themeValues.activeColor, ";\n text-decoration: ").concat(variant === "ghost" || variant === "smallGhost" ? "underline" : "none", ";\n ");
12613
- var disabledStyles = "\n background-clor: #6E727E;\n border-clor: #6E727E;\n color: #FFFFFF;\n &:focus {\n box-shadow: 0 0 10px #6E727E;\n outline: none;\n }\n ";
12638
+ var disabledStyles = "\n background-clor: #6E727E;\n border-color: #6E727E;\n color: #FFFFFF;\n &:focus {\n box-shadow: 0 0 10px #6E727E;\n outline: none;\n }\n ";
12614
12639
  return /*#__PURE__*/React__default.createElement(Box, {
12615
12640
  variant: variant,
12616
12641
  padding: themeValues.padding,
@@ -12622,7 +12647,7 @@ var ButtonWithAction = function ButtonWithAction(_ref) {
12622
12647
  activeStyles: activeStyles,
12623
12648
  disabledStyles: disabledStyles,
12624
12649
  as: "button",
12625
- onClick: action,
12650
+ onClick: !isLoading && action,
12626
12651
  borderRadius: "2px",
12627
12652
  theme: themeContext,
12628
12653
  extraStyles: isLoading ? loadingExtraStyles : extraStyles,
@@ -12905,29 +12930,17 @@ var AccountsIconSmall = function AccountsIconSmall(_ref) {
12905
12930
  width: "29",
12906
12931
  height: "27"
12907
12932
  })), /*#__PURE__*/React__default.createElement("g", {
12908
- id: "Random-Icon-Work",
12909
12933
  stroke: "none",
12910
12934
  strokeWidth: "1",
12911
12935
  fill: "none",
12912
12936
  fillRule: "evenodd"
12913
- }, /*#__PURE__*/React__default.createElement("g", {
12914
- id: "Header/Desktop/Menu"
12915
- }, /*#__PURE__*/React__default.createElement("g", {
12916
- id: "Header/Desktop/Menu/Accounts-Tab"
12917
- }, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("g", {
12918
- id: "Payments"
12919
- }, /*#__PURE__*/React__default.createElement("g", {
12920
- id: "folder-open"
12921
- }, /*#__PURE__*/React__default.createElement("mask", {
12937
+ }, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("mask", {
12922
12938
  id: "mask-2-accountssmall",
12923
12939
  fill: "white"
12924
12940
  }, /*#__PURE__*/React__default.createElement("use", {
12925
12941
  xlinkHref: "#path-1-accountssmall"
12926
- })), /*#__PURE__*/React__default.createElement("g", {
12927
- id: "Mask"
12928
- }), /*#__PURE__*/React__default.createElement("path", {
12942
+ })), /*#__PURE__*/React__default.createElement("g", null), /*#__PURE__*/React__default.createElement("path", {
12929
12943
  d: "M1.875,17.9609424 L4.30077547,13.8125148 C4.60546242,13.2968908 5.01561733,12.8867359 5.53124128,12.5820489 C6.04686523,12.277362 6.60936389,12.1250188 7.21873726,12.1250188 L7.21873726,12.1250188 L18.7499598,12.1250188 L18.7499598,10.4375228 C18.7499598,9.9687741 18.5858975,9.57033719 18.2577734,9.24221315 C17.9296494,8.91408911 17.5312125,8.75002682 17.0624638,8.75002682 L17.0624638,8.75002682 L11.4374772,8.75002682 L9.18748257,6.50003219 L3.56249598,6.50003219 C3.09374727,6.50003219 2.69531037,6.66409447 2.36718633,6.99221851 C2.03906229,7.32034255 1.875,7.71877946 1.875,8.18752816 L1.875,8.18752816 L1.875,17.9609424 Z M17.519494,20 C17.9179303,20 18.2929296,19.900391 18.6444913,19.7011726 C18.9960529,19.5019541 19.2655837,19.2265643 19.4530831,18.8750027 L19.4530831,18.8750027 L22.0194832,14.5156381 C22.1835455,14.2343887 22.1835455,13.9531394 22.0194832,13.6718901 C21.8554209,13.3906408 21.6093278,13.2500161 21.2812037,13.2500161 L21.2812037,13.2500161 L7.21873726,13.2500161 C6.82030089,13.2500161 6.4453016,13.3496251 6.09373994,13.5488435 C5.74217828,13.748062 5.47264749,14.0234517 5.28514812,14.3750134 L5.28514812,14.3750134 L2.71874799,18.734378 C2.5546857,19.0156273 2.5546857,19.2968767 2.71874799,19.578126 C2.88281028,19.8593753 3.12890344,20 3.45702748,20 L3.45702748,20 L17.519494,20 Z",
12930
- id: "f",
12931
12944
  fill: themeValues.singleIconColor,
12932
12945
  fillRule: "nonzero",
12933
12946
  mask: "url(#mask-2-accountssmall)"
@@ -13848,18 +13861,13 @@ var IconNeutral = function IconNeutral(_ref) {
13848
13861
  xmlnsXlink: "http://www.w3.org/1999/xlink",
13849
13862
  style: {
13850
13863
  margin: margin
13851
- }
13864
+ },
13865
+ "aria-label": "Neutral"
13852
13866
  }, /*#__PURE__*/React__default.createElement("g", {
13853
- id: "icon-neutral-group",
13854
13867
  fill: fill,
13855
13868
  fillRule: "nonzero",
13856
13869
  stroke: fill
13857
- }, /*#__PURE__*/React__default.createElement("g", {
13858
- id: "icon-neutral-Group-2"
13859
- }, /*#__PURE__*/React__default.createElement("g", {
13860
- id: "icon-neutral-PasswordVerification-Empty"
13861
- }, /*#__PURE__*/React__default.createElement("circle", {
13862
- id: "icon-neutral-Oval",
13870
+ }, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("g", null, /*#__PURE__*/React__default.createElement("circle", {
13863
13871
  cx: "9",
13864
13872
  cy: "9",
13865
13873
  r: "8.5"
@@ -13886,27 +13894,22 @@ var IconValid = function IconValid(_ref) {
13886
13894
  xmlnsXlink: "http://www.w3.org/1999/xlink",
13887
13895
  style: {
13888
13896
  margin: margin
13889
- }
13897
+ },
13898
+ "aria-label": "Valid"
13890
13899
  }, /*#__PURE__*/React__default.createElement("g", {
13891
- id: "icon-valid-Authentication",
13892
13900
  stroke: "none",
13893
13901
  strokeWidth: "1",
13894
13902
  fill: "none",
13895
13903
  fillRule: "evenodd"
13896
13904
  }, /*#__PURE__*/React__default.createElement("g", {
13897
- id: "icon-valid-00.1.0.1---HSS---Register---Already-Exists-Error",
13898
13905
  transform: "translate(-538.000000, -996.000000)"
13899
13906
  }, /*#__PURE__*/React__default.createElement("g", {
13900
- id: "icon-valid-Password-Requirements",
13901
13907
  transform: "translate(457.000000, 938.000000)"
13902
13908
  }, /*#__PURE__*/React__default.createElement("g", {
13903
- id: "icon-valid-Group-2",
13904
13909
  transform: "translate(81.000000, 20.000000)"
13905
13910
  }, /*#__PURE__*/React__default.createElement("g", {
13906
- id: "icon-valid-PasswordVerification-Sucess",
13907
13911
  transform: "translate(0.000000, 38.000000)"
13908
13912
  }, /*#__PURE__*/React__default.createElement("circle", {
13909
- id: "icon-valid-Oval",
13910
13913
  stroke: bgFill,
13911
13914
  fill: bgFill,
13912
13915
  fillRule: "nonzero",
@@ -13914,13 +13917,10 @@ var IconValid = function IconValid(_ref) {
13914
13917
  cy: "9",
13915
13918
  r: "8.5"
13916
13919
  }), /*#__PURE__*/React__default.createElement("g", {
13917
- id: "icon-valid-baseline-check-24px",
13918
13920
  transform: "translate(2.000000, 2.000000)"
13919
13921
  }, /*#__PURE__*/React__default.createElement("polygon", {
13920
- id: "icon-valid-Path",
13921
13922
  points: "0 0 14 0 14 14 0 14"
13922
13923
  }), /*#__PURE__*/React__default.createElement("polygon", {
13923
- id: "icon-valid-Path-2",
13924
13924
  fill: iconFill,
13925
13925
  points: "5.25 9.4325 2.8175 7 1.98916667 7.8225 5.25 11.0833333 12.25 4.08333333 11.4275 3.26083333"
13926
13926
  }))))))));
@@ -13946,40 +13946,33 @@ var IconInvalid = function IconInvalid(_ref) {
13946
13946
  xmlnsXlink: "http://www.w3.org/1999/xlink",
13947
13947
  style: {
13948
13948
  margin: margin
13949
- }
13949
+ },
13950
+ "aria-label": "Invalid"
13950
13951
  }, /*#__PURE__*/React__default.createElement("g", {
13951
- id: "icon-invalid-Authentication",
13952
13952
  stroke: "none",
13953
13953
  strokeWidth: "1",
13954
13954
  fill: "none",
13955
13955
  fillRule: "evenodd"
13956
13956
  }, /*#__PURE__*/React__default.createElement("g", {
13957
- id: "icon-invalid-00.1.0.1---HSS---Register---Already-Exists-Error",
13958
13957
  transform: "translate(-538.000000, -1064.000000)",
13959
13958
  fillRule: "nonzero"
13960
13959
  }, /*#__PURE__*/React__default.createElement("g", {
13961
- id: "icon-invalid-Password-Requirements",
13962
13960
  transform: "translate(457.000000, 938.000000)"
13963
13961
  }, /*#__PURE__*/React__default.createElement("g", {
13964
- id: "icon-invalid-Group-2",
13965
13962
  transform: "translate(81.000000, 20.000000)"
13966
13963
  }, /*#__PURE__*/React__default.createElement("g", {
13967
- id: "icon-invalid-PasswordVerification-Error",
13968
13964
  transform: "translate(0.000000, 106.000000)"
13969
13965
  }, /*#__PURE__*/React__default.createElement("circle", {
13970
- id: "icon-invalid-Oval",
13971
13966
  stroke: bgFill,
13972
13967
  fill: bgFill,
13973
13968
  cx: "9",
13974
13969
  cy: "9",
13975
13970
  r: "8.5"
13976
13971
  }), /*#__PURE__*/React__default.createElement("g", {
13977
- id: "icon-invalid-Icon/Close",
13978
13972
  transform: "translate(2.000000, 2.000000)",
13979
13973
  fill: iconFill
13980
13974
  }, /*#__PURE__*/React__default.createElement("path", {
13981
13975
  d: "M7.58333333,7.58333333 L7.58333333,11.6666667 L6.41666667,11.6666667 L6.41666667,7.58333333 L2.33333333,7.58333333 L2.33333333,6.41666667 L6.41666667,6.41666667 L6.41666667,2.33333333 L7.58333333,2.33333333 L7.58333333,6.41666667 L11.6666667,6.41666667 L11.6666667,7.58333333 L7.58333333,7.58333333 Z",
13982
- id: "icon-invalid-x",
13983
13976
  transform: "translate(7.000000, 7.000000) rotate(45.000000) translate(-7.000000, -7.000000) "
13984
13977
  }))))))));
13985
13978
  };
@@ -14623,8 +14616,8 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
14623
14616
  var themeValues = createThemeValues(themeContext, fallbackValues$7, "Breadcrumb");
14624
14617
  return /*#__PURE__*/React__default.createElement(Box, {
14625
14618
  padding: "0",
14626
- role: "region",
14627
- "aria-level": "Breadcrumb navigation"
14619
+ as: "nav",
14620
+ "aria-label": "Breadcrumb navigation"
14628
14621
  }, /*#__PURE__*/React__default.createElement(Cluster, {
14629
14622
  justify: "flex-start",
14630
14623
  align: "center"
@@ -14635,6 +14628,7 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
14635
14628
  return /*#__PURE__*/React__default.createElement(React.Fragment, {
14636
14629
  key: "breadcrumb-".concat(linkText)
14637
14630
  }, /*#__PURE__*/React__default.createElement(InternalLink, {
14631
+ "aria-current": index === breadcrumbsList.length - 1 && "location",
14638
14632
  to: linkDestination,
14639
14633
  active: isActive.toString(),
14640
14634
  color: themeValues.color,
@@ -16481,6 +16475,7 @@ var Checkbox = function Checkbox(_ref4) {
16481
16475
  id: "checkbox-".concat(name),
16482
16476
  disabled: disabled,
16483
16477
  name: name,
16478
+ "aria-label": name,
16484
16479
  checked: checked,
16485
16480
  onChange: onChange,
16486
16481
  tabIndex: "-1"
@@ -16595,7 +16590,8 @@ var RadioButton = function RadioButton(_ref3) {
16595
16590
  name = _ref3.name;
16596
16591
  return /*#__PURE__*/React__default.createElement(RadioButtonBorder, {
16597
16592
  isSelected: isSelected,
16598
- name: name
16593
+ name: name,
16594
+ "aria-checked": isSelected
16599
16595
  }, isSelected && /*#__PURE__*/React__default.createElement(RadioButtonCenter, null));
16600
16596
  };
16601
16597
 
@@ -16641,6 +16637,8 @@ var CheckboxListItem = function CheckboxListItem(_ref) {
16641
16637
  name = _ref.name,
16642
16638
  imageUrl = _ref.imageUrl,
16643
16639
  image = _ref.image,
16640
+ _ref$imageAlt = _ref.imageAlt,
16641
+ imageAlt = _ref$imageAlt === void 0 ? "checkbox icon" : _ref$imageAlt,
16644
16642
  disabled = _ref.disabled,
16645
16643
  borderColor = _ref.borderColor,
16646
16644
  color = _ref.color,
@@ -16664,6 +16662,7 @@ var CheckboxListItem = function CheckboxListItem(_ref) {
16664
16662
  id: "checkbox-".concat(name, "-").concat(index)
16665
16663
  }), /*#__PURE__*/React__default.createElement(CheckboxLabel, {
16666
16664
  name: name,
16665
+ "aria-label": name,
16667
16666
  htmlFor: "checkbox-".concat(name, "-").concat(index),
16668
16667
  onClick: disabled ? noop : onSelect,
16669
16668
  onKeyDown: disabled ? noop : onSelect,
@@ -16683,7 +16682,8 @@ var CheckboxListItem = function CheckboxListItem(_ref) {
16683
16682
  justify: "flex-start",
16684
16683
  align: "center"
16685
16684
  }, /*#__PURE__*/React__default.createElement(CheckboxItemIcon, {
16686
- src: imageUrl
16685
+ src: imageUrl,
16686
+ alt: imageAlt
16687
16687
  }))), /*#__PURE__*/React__default.createElement(Box, {
16688
16688
  padding: "0rem 0.5rem 0rem 0rem",
16689
16689
  hiddenStyles: !image
@@ -16780,7 +16780,7 @@ function _templateObject4$2() {
16780
16780
  }
16781
16781
 
16782
16782
  function _templateObject3$5() {
16783
- var data = _taggedTemplateLiteral(["\n background-color: ", ";\n text-align: start;\n border-size: 0px;\n border-color: transparent;\n box-shadow: none;\n padding: 1rem;\n box-sizing: border-box;\n width: 100%;\n cursor: ", ";\n\n &:hover {\n background-color: ", ";\n }\n &:focus {\n background-color: ", ";\n outline: none;\n }\n"]);
16783
+ var data = _taggedTemplateLiteral(["\n background-color: ", ";\n text-align: start;\n border-width: 0px;\n border-color: transparent;\n box-shadow: none;\n padding: 1rem;\n box-sizing: border-box;\n width: 100%;\n cursor: ", ";\n\n &:hover {\n background-color: ", ";\n }\n &:focus {\n background-color: ", ";\n outline: none;\n }\n"]);
16784
16784
 
16785
16785
  _templateObject3$5 = function _templateObject3() {
16786
16786
  return data;
@@ -16985,7 +16985,7 @@ var Dropdown = function Dropdown(_ref7) {
16985
16985
  tabIndex: 0,
16986
16986
  padding: "0",
16987
16987
  width: "100%",
16988
- focusStyles: "background-color: ".concat(themeValues.hoverColor, ";"),
16988
+ hoverStyles: "background-color: ".concat(themeValues.hoverColor, ";"),
16989
16989
  "aria-expanded": isOpen
16990
16990
  }, /*#__PURE__*/React__default.createElement(Box, {
16991
16991
  as: "button",
@@ -16993,7 +16993,6 @@ var Dropdown = function Dropdown(_ref7) {
16993
16993
  width: "100%",
16994
16994
  padding: "12px",
16995
16995
  hoverStyles: "background-color: ".concat(themeValues.hoverColor, ";"),
16996
- focusStyles: "background-color: ".concat(themeValues.hoverColor, ";"),
16997
16996
  borderSize: "1px",
16998
16997
  borderColor: isError ? ERROR_COLOR : isOpen ? themeValues.selectedColor : GREY_CHATEAU,
16999
16998
  borderRadius: "2px",
@@ -17003,6 +17002,7 @@ var Dropdown = function Dropdown(_ref7) {
17003
17002
  direction: "row",
17004
17003
  bottomItem: 2
17005
17004
  }, isOpen ? /*#__PURE__*/React__default.createElement(SearchInput, {
17005
+ "aria-label": inputValue || "Dropdown awaiting search value",
17006
17006
  value: inputValue,
17007
17007
  onChange: noop,
17008
17008
  themeValues: themeValues
@@ -17015,7 +17015,7 @@ var Dropdown = function Dropdown(_ref7) {
17015
17015
  }, /*#__PURE__*/React__default.createElement(DropdownIcon, null)))), isOpen ? /*#__PURE__*/React__default.createElement(DropdownContentWrapper, {
17016
17016
  open: isOpen,
17017
17017
  ref: dropdownRef,
17018
- tabIndex: -1
17018
+ tabIndex: 0
17019
17019
  }, /*#__PURE__*/React__default.createElement(Stack, {
17020
17020
  childGap: "0"
17021
17021
  }, filteredOptions.map(function (choice, i) {
@@ -18488,7 +18488,8 @@ var InputField = styled__default.input(_templateObject$p(), function (_ref) {
18488
18488
 
18489
18489
  var FormattedInputField = styled__default(function (_ref7) {
18490
18490
  var showErrors = _ref7.showErrors,
18491
- props = _objectWithoutProperties(_ref7, ["showErrors"]);
18491
+ themeValues = _ref7.themeValues,
18492
+ props = _objectWithoutProperties(_ref7, ["showErrors", "themeValues"]);
18492
18493
 
18493
18494
  return /*#__PURE__*/React__default.createElement(src_1, props);
18494
18495
  })(_templateObject3$7(), function (_ref8) {
@@ -18547,10 +18548,12 @@ var FormInput = function FormInput(_ref13) {
18547
18548
  justify: "space-between",
18548
18549
  align: "center"
18549
18550
  }, /*#__PURE__*/React__default.createElement(Text$1, {
18551
+ as: "label",
18550
18552
  color: themeValues.labelColor,
18551
18553
  variant: "pS",
18552
18554
  weight: themeValues.fontWeight,
18553
- extraStyles: "word-break: break-word;\n font-family: Public Sans;\n &::first-letter {\n text-transform: uppercase;\n }"
18555
+ extraStyles: "word-break: break-word;\n font-family: Public Sans;\n &::first-letter {\n text-transform: uppercase;\n }",
18556
+ id: labelTextWhenNoError.replace(/\s+/g, "-")
18554
18557
  }, labelTextWhenNoError), /*#__PURE__*/React__default.createElement(Text$1, {
18555
18558
  color: themeValues.linkColor,
18556
18559
  variant: "pS",
@@ -18562,11 +18565,12 @@ var FormInput = function FormInput(_ref13) {
18562
18565
  justify: "space-between",
18563
18566
  align: "center"
18564
18567
  }, /*#__PURE__*/React__default.createElement(Text$1, {
18568
+ as: "label",
18565
18569
  color: themeValues.labelColor,
18566
18570
  variant: "pS",
18567
18571
  fontWeight: themeValues.fontWeight,
18568
18572
  extraStyles: "word-break: break-word;\n font-family: Public Sans;\n &::first-letter {\n text-transform: uppercase;\n }",
18569
- id: labelTextWhenNoError
18573
+ id: labelTextWhenNoError.replace(/\s+/g, "-")
18570
18574
  }, labelTextWhenNoError), type === "password" && /*#__PURE__*/React__default.createElement(Text$1, {
18571
18575
  variant: "pS",
18572
18576
  color: themeValues.linkColor,
@@ -18587,7 +18591,7 @@ var FormInput = function FormInput(_ref13) {
18587
18591
  }, decorator)))), /*#__PURE__*/React__default.createElement(Box, {
18588
18592
  padding: "0"
18589
18593
  }, formatter ? /*#__PURE__*/React__default.createElement(FormattedInputField, _extends({
18590
- "aria-labelledby": labelTextWhenNoError,
18594
+ "aria-labelledby": labelTextWhenNoError.replace(/\s+/g, "-"),
18591
18595
  onChange: function onChange(e) {
18592
18596
  return fieldActions.set(e);
18593
18597
  },
@@ -18603,7 +18607,7 @@ var FormInput = function FormInput(_ref13) {
18603
18607
  customHeight: customHeight,
18604
18608
  extraStyles: extraStyles
18605
18609
  }, props)) : /*#__PURE__*/React__default.createElement(InputField, _extends({
18606
- "aria-labelledby": labelTextWhenNoError,
18610
+ "aria-labelledby": labelTextWhenNoError.replace(/\s+/g, "-"),
18607
18611
  onChange: function onChange(e) {
18608
18612
  return fieldActions.set(e.target.value);
18609
18613
  },
@@ -18894,13 +18898,14 @@ var HamburgerButton = function HamburgerButton(_ref4) {
18894
18898
  inactiveColor = _ref4.inactiveColor,
18895
18899
  isActive = _ref4.isActive,
18896
18900
  _ref4$onClick = _ref4.onClick,
18897
- onClick = _ref4$onClick === void 0 ? noop : _ref4$onClick;
18901
+ onClick = _ref4$onClick === void 0 ? noop : _ref4$onClick,
18902
+ controls = _ref4.controls;
18898
18903
  return /*#__PURE__*/React__default.createElement(Hamburger, {
18899
18904
  className: isActive === true ? "active" : "",
18900
18905
  onClick: onClick,
18901
18906
  type: "button",
18902
- ariaLabel: "Menu",
18903
- ariaControls: "navigation"
18907
+ "aria-label": "Menu",
18908
+ "aria-controls": controls
18904
18909
  }, /*#__PURE__*/React__default.createElement(HamburgerBox, null, /*#__PURE__*/React__default.createElement(HamburgerInner, {
18905
18910
  className: isActive === true ? "active" : "",
18906
18911
  inactiveColor: inactiveColor,
@@ -19707,6 +19712,7 @@ var RadioButton$1 = function RadioButton(_ref2) {
19707
19712
  animate: radioOn ? radioFocused ? "onFocused" : "on" : radioFocused ? "offFocused" : "off"
19708
19713
  }, /*#__PURE__*/React__default.createElement(HiddenRadioButton, {
19709
19714
  id: "#radio-".concat(name),
19715
+ "aria-label": name,
19710
19716
  disabled: disabled,
19711
19717
  onClick: toggleRadio,
19712
19718
  tabIndex: "-1"
@@ -30512,6 +30518,7 @@ var ToggleSwitch = function ToggleSwitch(_ref6) {
30512
30518
  extraStyles: "display: flex; align-items: center;",
30513
30519
  dataQa: dataQa
30514
30520
  }, /*#__PURE__*/React__default.createElement(HiddenToggleSwitchBox, {
30521
+ "aria-label": name,
30515
30522
  checked: isOn,
30516
30523
  onChange: disabled ? noop : onToggle,
30517
30524
  disabled: disabled,
@@ -32593,29 +32600,31 @@ var EditableList = function EditableList(_ref) {
32593
32600
  padding: "0",
32594
32601
  borderRadius: "4px",
32595
32602
  extraStyles: "box-shadow: 0px 2px 14px 0px rgb(246, 246, 249),\n 0px 3px 8px 0px rgb(202, 206, 216);"
32596
- }, items.map(function (props) {
32603
+ }, items.map(function (item) {
32597
32604
  var _useState = React.useState(false),
32598
32605
  _useState2 = _slicedToArray(_useState, 2),
32599
32606
  modalOpen = _useState2[0],
32600
32607
  toggleModal = _useState2[1];
32601
32608
 
32602
32609
  return /*#__PURE__*/React__default.createElement(EditableListItem, {
32603
- listItemSize: !!props.id && props.id === autoPayMethod ? "big" : listItemSize,
32604
- key: props.id
32610
+ listItemSize: !!item.id && item.id === autoPayMethod ? "big" : listItemSize,
32611
+ key: item.id || item
32605
32612
  }, /*#__PURE__*/React__default.createElement(Text$1, {
32606
32613
  variant: "p",
32607
32614
  color: CHARADE_GREY
32608
- }, renderItem(props)), /*#__PURE__*/React__default.createElement(EditableListItemControls, null, props.isPrimary && /*#__PURE__*/React__default.createElement(Text$1, {
32615
+ }, renderItem(item)), /*#__PURE__*/React__default.createElement(EditableListItemControls, null, item.isPrimary && /*#__PURE__*/React__default.createElement(Text$1, {
32609
32616
  variant: "p",
32610
32617
  color: STORM_GREY,
32611
- extraStyles: "font-style: italic;"
32618
+ extraStyles: "font-style: italic;",
32619
+ key: "Default ".concat(itemName)
32612
32620
  }, "Default ", itemName), canRemove && /*#__PURE__*/React__default.createElement(Box, {
32613
32621
  padding: "0 0.5rem",
32614
32622
  border: "2px solid transparent",
32615
32623
  extraStyles: ":not(:first-child) { border-left: 2px solid ".concat(BOSTON_BLUE, ";}"),
32616
- dataQa: qaPrefix + " Remove"
32624
+ dataQa: qaPrefix + " Remove",
32625
+ key: "Remove ".concat(item.id)
32617
32626
  }, useModal ? /*#__PURE__*/React__default.createElement(Modal, _extends({
32618
- item: _objectSpread2({}, props)
32627
+ item: _objectSpread2({}, item)
32619
32628
  }, modalProps, {
32620
32629
  modalOpen: modalOpen,
32621
32630
  toggleModal: toggleModal
@@ -32623,19 +32632,20 @@ var EditableList = function EditableList(_ref) {
32623
32632
  variant: "smallGhost",
32624
32633
  text: "Remove",
32625
32634
  action: function action() {
32626
- return removeItem(props.id);
32635
+ return removeItem(item.id);
32627
32636
  },
32628
32637
  extraStyles: "min-width: 0;"
32629
32638
  })), canEdit && /*#__PURE__*/React__default.createElement(Box, {
32630
32639
  padding: "0 0.5rem",
32631
32640
  border: "2px solid transparent",
32632
32641
  extraStyles: ":not(:first-child) { border-left: 2px solid ".concat(BOSTON_BLUE, ";}"),
32633
- dataQa: qaPrefix + " Edit"
32642
+ dataQa: qaPrefix + " Edit",
32643
+ key: "Edit ".concat(item.id)
32634
32644
  }, /*#__PURE__*/React__default.createElement(ButtonWithAction, {
32635
32645
  variant: "smallGhost",
32636
32646
  text: "Edit",
32637
32647
  action: function action() {
32638
- return editItem(props.id);
32648
+ return editItem(item.id);
32639
32649
  },
32640
32650
  extraStyles: "min-width: 0;"
32641
32651
  }))));
@@ -34423,7 +34433,8 @@ var fallbackValues$s = {
34423
34433
  };
34424
34434
 
34425
34435
  var NavMenuDesktop = function NavMenuDesktop(_ref) {
34426
- var _ref$top = _ref.top,
34436
+ var id = _ref.id,
34437
+ _ref$top = _ref.top,
34427
34438
  top = _ref$top === void 0 ? "125%" : _ref$top,
34428
34439
  _ref$left = _ref.left,
34429
34440
  left = _ref$left === void 0 ? "-100%" : _ref$left,
@@ -34438,6 +34449,7 @@ var NavMenuDesktop = function NavMenuDesktop(_ref) {
34438
34449
  themeValues = _ref.themeValues;
34439
34450
  var menuCarat = "&:after { bottom: 100%; right: 10px; border: solid transparent; content: \" \"; height: 0; width: 0; position: absolute; pointer-events: none; border-color: ".concat(themeValues.backgroundColor, "00; border-bottom-color: ").concat(themeValues.backgroundColor, "; border-width: 10px; margin-left: -10px; }");
34440
34451
  return /*#__PURE__*/React__default.createElement(Imposter, {
34452
+ id: id,
34441
34453
  breakout: true,
34442
34454
  top: top,
34443
34455
  left: left,
@@ -34500,12 +34512,14 @@ var menu = posed.div({
34500
34512
  var ImposterMenu = styled__default(menu)(_templateObject$y());
34501
34513
 
34502
34514
  var NavMenuMobile = function NavMenuMobile(_ref) {
34503
- var _ref$menuContent = _ref.menuContent,
34515
+ var id = _ref.id,
34516
+ _ref$menuContent = _ref.menuContent,
34504
34517
  menuContent = _ref$menuContent === void 0 ? [] : _ref$menuContent,
34505
34518
  _ref$visible = _ref.visible,
34506
34519
  visible = _ref$visible === void 0 ? false : _ref$visible,
34507
34520
  themeValues = _ref.themeValues;
34508
34521
  return /*#__PURE__*/React__default.createElement(ImposterMenu, {
34522
+ id: id,
34509
34523
  initialPose: "invisible",
34510
34524
  pose: visible ? "visible" : "invisible"
34511
34525
  }, /*#__PURE__*/React__default.createElement(Box, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thecb/components",
3
- "version": "3.5.14",
3
+ "version": "3.5.17",
4
4
  "description": "Common lib for CityBase react components",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -25,7 +25,7 @@
25
25
  "@babel/preset-react": "^7.0.0",
26
26
  "@babel/register": "^7.6.2",
27
27
  "@rollup/plugin-json": "^4.0.3",
28
- "@storybook/addon-a11y": "^5.3.14",
28
+ "@storybook/addon-a11y": "5.3.14",
29
29
  "@storybook/addon-actions": "^5.3.14",
30
30
  "@storybook/addon-console": "^1.2.1",
31
31
  "@storybook/addon-docs": "^5.3.19",
@@ -15,12 +15,15 @@ const Breadcrumbs = ({ breadcrumbsList = [] }) => {
15
15
  "Breadcrumb"
16
16
  );
17
17
  return (
18
- <Box padding="0" role="region" aria-level="Breadcrumb navigation">
18
+ <Box padding="0" as="nav" aria-label="Breadcrumb navigation">
19
19
  <Cluster justify="flex-start" align="center">
20
20
  {breadcrumbsList.map(
21
21
  ({ linkText, linkDestination, isActive }, index) => (
22
22
  <Fragment key={`breadcrumb-${linkText}`}>
23
23
  <InternalLink
24
+ aria-current={
25
+ index === breadcrumbsList.length - 1 && "location"
26
+ }
24
27
  to={linkDestination}
25
28
  active={isActive.toString()}
26
29
  color={themeValues.color}