@sproutsocial/racine 15.0.1 → 15.1.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 (31) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/__flow__/TokenInput/TokenInput.flow.js +6 -3
  3. package/__flow__/TokenInput/TokenScreenReaderStatus.js +32 -0
  4. package/commonjs/Label/Label.js +11 -2
  5. package/commonjs/Loader/styles.js +6 -9
  6. package/commonjs/LoaderButton/LoaderButton.js +29 -51
  7. package/commonjs/SpotIllustration/SpotIllustration.js +9 -5
  8. package/commonjs/TokenInput/TokenInput.js +11 -6
  9. package/commonjs/TokenInput/TokenScreenReaderStatus.js +51 -0
  10. package/dist/types/Label/Label.d.ts.map +1 -1
  11. package/dist/types/Label/LabelTypes.d.ts +1 -0
  12. package/dist/types/Label/LabelTypes.d.ts.map +1 -1
  13. package/dist/types/Loader/styles.d.ts.map +1 -1
  14. package/dist/types/LoaderButton/LoaderButton.d.ts +1 -1
  15. package/dist/types/LoaderButton/LoaderButton.d.ts.map +1 -1
  16. package/dist/types/SpotIllustration/SpotIllustration.d.ts +1 -1
  17. package/dist/types/SpotIllustration/SpotIllustration.d.ts.map +1 -1
  18. package/dist/types/SpotIllustration/SpotIllustrationTypes.d.ts +2 -1
  19. package/dist/types/SpotIllustration/SpotIllustrationTypes.d.ts.map +1 -1
  20. package/dist/types/SpotIllustration/__tests__/SpotIllustrationTypes.d.ts +2 -0
  21. package/dist/types/SpotIllustration/__tests__/SpotIllustrationTypes.d.ts.map +1 -0
  22. package/dist/types/TokenInput/TokenInput.d.ts.map +1 -1
  23. package/dist/types/TokenInput/TokenInputTypes.d.ts +4 -3
  24. package/dist/types/TokenInput/TokenInputTypes.d.ts.map +1 -1
  25. package/lib/Label/Label.js +11 -2
  26. package/lib/Loader/styles.js +6 -9
  27. package/lib/LoaderButton/LoaderButton.js +29 -51
  28. package/lib/SpotIllustration/SpotIllustration.js +9 -3
  29. package/lib/TokenInput/TokenInput.js +11 -6
  30. package/lib/TokenInput/TokenScreenReaderStatus.js +43 -0
  31. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Change Log
2
2
 
3
+ ## 15.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d5feb9c0: The `LoaderButton` component has been updated to have accessible visual contrast between the button and the loader. We've done this by applying an opacity directly to the `background-color` of the button, rather than the entire `button`.
8
+
9
+ | Mode | Old | New |
10
+ | ----- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
11
+ | Dark | ![Screenshot 2023-06-01 at 1 46 55 PM](https://github.com/sproutsocial/racine/assets/29648040/eb54bdf0-8146-4846-9496-c074f3ca57e8) | ![Screenshot 2023-06-01 at 1 47 31 PM](https://github.com/sproutsocial/racine/assets/29648040/f8f27c6c-af53-4c51-8117-7b50be6952d7) |
12
+ | Light | ![Screenshot 2023-06-01 at 1 46 43 PM](https://github.com/sproutsocial/racine/assets/29648040/e2313590-51c6-4feb-adeb-6cde9087baf1) | ![Screenshot 2023-06-01 at 1 46 28 PM](https://github.com/sproutsocial/racine/assets/29648040/a7de5ef4-fe65-45e1-a7c9-9948f8eb1948) |
13
+
14
+ - a75290d2: - Added screen reader support for the status of added and removed tokens.
15
+ - `iconProps` is now supported for tokens
16
+ - `iconName` on tokens now supports PartnerLogo names
17
+ - b6ff36b9: `SpotIllustration` accessibility updates:
18
+ - type includes `svg` props, including `aria-label` and `aria-hidden`
19
+ - set default role to `img`
20
+ - a31a7172: Label component now accepts the `required` prop which appends an asterisk to the end of the label
21
+
3
22
  ## 15.0.1
4
23
 
5
24
  ### Patch Changes
@@ -1,9 +1,12 @@
1
1
  // @flow
2
2
  import * as React from 'react';
3
- import type { EnumIconNames } from "../EnumIconNames.flow";
3
+ import type { TypeIconProps, TypeIconName } from "../Icon/index.flow";
4
4
  export type TypeTokenSpec = {
5
5
  id: string,
6
- iconName?: EnumIconNames,
6
+ iconName?: TypeIconName,
7
+ iconProps?: $Diff<TypeIconProps, {|
8
+ name: string
9
+ |}>,
7
10
  value: string,
8
11
  valid?: boolean,
9
12
  ...
@@ -12,7 +15,7 @@ export type TypeTokenInputProps = {
12
15
  /** ID of the form element, should match the "for" value of the associated label */
13
16
  id: string,
14
17
  name: string,
15
- iconName?: EnumIconNames,
18
+ iconName?: TypeIconName,
16
19
  /** Array of delimiter key names */
17
20
  delimiters?: string[],
18
21
  /** Current input text. Required when controlling the input text */
@@ -0,0 +1,32 @@
1
+ /* eslint-disable react/prop-types */
2
+ import React from 'react';
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import { VisuallyHidden } from "../VisuallyHidden";
5
+ function usePrevious(value) {
6
+ const ref = useRef();
7
+ useEffect(() => {
8
+ ref.current = value;
9
+ });
10
+ return ref.current;
11
+ }
12
+ export const TokenScreenReaderStatus = ({
13
+ tokens
14
+ }) => {
15
+ const prevTokens = usePrevious(tokens);
16
+ const [tokenStatus, setTokenStatus] = useState('');
17
+
18
+ // TODO: Use callbacks so consumers can pass localized messaging to the screen reader
19
+ useEffect(() => {
20
+ if (prevTokens) {
21
+ if (prevTokens.length > tokens.length) {
22
+ setTokenStatus(`${prevTokens.filter(item => tokens.indexOf(item) === -1)[0].value} has been removed`);
23
+ }
24
+ if (prevTokens.length < tokens.length) {
25
+ setTokenStatus(`${tokens[tokens.length - 1].value} has been added.`);
26
+ }
27
+ }
28
+ }, [prevTokens, tokens, tokenStatus]);
29
+ return <VisuallyHidden as="div" role="status">
30
+ {tokenStatus}
31
+ </VisuallyHidden>;
32
+ };
@@ -35,6 +35,8 @@ var LabelBase = function LabelBase(_ref) {
35
35
  as: as
36
36
  }));
37
37
  };
38
+
39
+ // TODO: Screen readers should read "required" instead of "*"
38
40
  var StyledLabel = (0, _styledComponents.default)(LabelBase).withConfig({
39
41
  displayName: "Label__StyledLabel",
40
42
  componentId: "sc-dh0olx-0"
@@ -49,12 +51,19 @@ var Label = /*#__PURE__*/function (_React$Component) {
49
51
  _createClass(Label, [{
50
52
  key: "render",
51
53
  value: function render() {
54
+ var _this$props = this.props,
55
+ htmlFor = _this$props.htmlFor,
56
+ required = _this$props.required,
57
+ children = _this$props.children;
52
58
  return /*#__PURE__*/React.createElement(StyledLabel, _extends({
53
59
  fontSize: 200,
54
60
  fontWeight: "semibold",
55
61
  color: "text.headline",
56
- "data-qa-label": this.props.htmlFor
57
- }, this.props));
62
+ "data-qa-label": htmlFor
63
+ }, this.props), children, required && /*#__PURE__*/React.createElement(_Text.default, {
64
+ ml: 100,
65
+ "aria-hidden": true
66
+ }, "*"));
58
67
  }
59
68
  }]);
60
69
  return Label;
@@ -13,10 +13,10 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
13
13
  var getSize = function getSize(size) {
14
14
  var spinnerSize = Math.round(size * 1);
15
15
  var borderWidth = Math.round(size * 0.1);
16
- return (0, _styledComponents.css)(["width:", "px;height:", "px;&:after{width:", "px;height:", "px;box-sizing:border-box;border-width:", "px;box-shadow:", ";}.no-cssanimations &::after{background-size:", "px;}"], size, size, spinnerSize, spinnerSize, borderWidth, function (_ref) {
16
+ return (0, _styledComponents.css)(["width:", "px;height:", "px;box-shadow:", ";&:after{width:", "px;height:", "px;box-sizing:border-box;border-width:", "px;}.no-cssanimations &::after{background-size:", "px;}"], size, size, function (_ref) {
17
17
  var theme = _ref.theme;
18
- return "inset 0 0 0 2px ".concat(theme.colors.neutral[600]);
19
- }, spinnerSize);
18
+ return "0 0 0 2px ".concat(theme.colors.neutral[600], ", \n inset 0 0 0 ").concat(borderWidth + 2, "px ").concat(theme.colors.neutral[600]);
19
+ }, spinnerSize, spinnerSize, borderWidth, spinnerSize);
20
20
  };
21
21
  var spin = (0, _styledComponents.keyframes)(["from{transform:translate(-50%,-50%) rotate(0deg);}to{transform:translate(-50%,-50%) rotate(360deg);}"]);
22
22
  var delayAnimation = (0, _styledComponents.keyframes)(["0%{opacity:0;}80%{opacity:0;}100%{opacity:1;}"]);
@@ -25,13 +25,10 @@ var Container = _styledComponents.default.div.attrs({
25
25
  }).withConfig({
26
26
  displayName: "styles__Container",
27
27
  componentId: "sc-1edimrk-0"
28
- })(["position:relative;margin:0 auto;padding:0;overflow:hidden;border-radius:100%;box-shadow:", ";animation:", ";&:after{position:absolute;top:50%;left:50%;background:transparent;border-style:solid;border-radius:100%;content:'';transition:opacity 250ms;border-color:", ";animation:", ";}", " ", ""], function (_ref2) {
29
- var theme = _ref2.theme;
30
- return "0 0 0 2px ".concat(theme.colors.neutral[600]);
31
- }, function (props) {
28
+ })(["position:relative;margin:0 auto;padding:0;overflow:hidden;border-radius:100%;animation:", ";&:after{position:absolute;top:50%;left:50%;background:transparent;border-style:solid;border-radius:100%;content:'';transition:opacity 250ms;border-color:", ";animation:", ";}", " ", ""], function (props) {
32
29
  return props.delay ? (0, _styledComponents.css)(["", " 2s 1;"], delayAnimation) : 'none';
33
- }, function (_ref3) {
34
- var theme = _ref3.theme;
30
+ }, function (_ref2) {
31
+ var theme = _ref2.theme;
35
32
  return "".concat(theme.colors.neutral[0], " ").concat(theme.colors.neutral[0], " ").concat(theme.colors.neutral[600], " ").concat(theme.colors.neutral[600]);
36
33
  }, function (props) {
37
34
  return props.delay ? (0, _styledComponents.css)(["", " 2.25s infinite linear,", " 2s 1"], spin, delayAnimation) : (0, _styledComponents.css)(["", " 2.25s infinite linear"], spin);
@@ -7,65 +7,44 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = exports.LoaderButton = void 0;
8
8
  var React = _interopRequireWildcard(require("react"));
9
9
  var _polished = require("polished");
10
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
11
- var _seedsColor = require("@sproutsocial/seeds-color");
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
12
11
  var _Box = _interopRequireDefault(require("../Box"));
13
12
  var _Button = _interopRequireDefault(require("../Button"));
14
13
  var _Loader = _interopRequireDefault(require("../Loader"));
15
- var _excluded = ["appearance", "isLoading", "disabled", "loaderLabel", "children"];
14
+ var _excluded = ["isLoading", "disabled", "loaderLabel", "children", "appearance"];
16
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
17
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
18
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
20
19
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
21
20
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
22
- // TODO: This is a temporary solution to get the loader button to work with dark mode
23
- var getColor = function getColor(appearance, themeColorMode) {
24
- var selectColorBasedOnMode = themeColorMode === 'dark' ? 'light' : 'dark';
25
- switch (appearance) {
26
- case 'unstyled':
27
- return selectColorBasedOnMode;
28
- case 'primary':
29
- return 'light';
30
- case 'secondary':
31
- return selectColorBasedOnMode;
32
- case 'destructive':
33
- return 'light';
34
- case 'placeholder':
35
- return selectColorBasedOnMode;
36
- case 'pill':
37
- return selectColorBasedOnMode;
38
-
39
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
40
- // @ts-ignore - as noted below, this case shouldn't exist
41
- case 'outline':
42
- // This case doesn't even make sense.... There's no outline button
43
- // TODO: investigate if this is even used anywhere
44
- return 'light';
45
- default:
46
- return 'light';
47
- }
48
- };
49
- var CustomLoader = (0, _styledComponents.default)(_Loader.default).withConfig({
50
- displayName: "LoaderButton__CustomLoader",
21
+ var StyledLoaderButton = (0, _styledComponents.default)(_Button.default).withConfig({
22
+ displayName: "LoaderButton__StyledLoaderButton",
51
23
  componentId: "sc-taipe0-0"
52
- })(["&:after{", " ", "}"], function (p) {
53
- return p.color === 'light' && (0, _styledComponents.css)(["border-color:", " ", " ", " ", ";"], (0, _polished.rgba)(_seedsColor.COLOR_NEUTRAL_0, 0.5), (0, _polished.rgba)(_seedsColor.COLOR_NEUTRAL_0, 0.5), (0, _polished.rgba)(_seedsColor.COLOR_NEUTRAL_0, 1), (0, _polished.rgba)(_seedsColor.COLOR_NEUTRAL_0, 1.0));
54
- }, function (p) {
55
- return p.color === 'dark' && (0, _styledComponents.css)(["border-color:", " ", " ", " ", ";"], (0, _polished.rgba)(_seedsColor.COLOR_NEUTRAL_1000, 0.5), (0, _polished.rgba)(_seedsColor.COLOR_NEUTRAL_1000, 0.5), (0, _polished.rgba)(_seedsColor.COLOR_NEUTRAL_1000, 1), (0, _polished.rgba)(_seedsColor.COLOR_NEUTRAL_1000, 1.0));
24
+ })(["background-color:", ";", ""], function (_ref) {
25
+ var _theme$colors$button, _theme$colors$button$;
26
+ var theme = _ref.theme,
27
+ appearance = _ref.appearance,
28
+ disabled = _ref.disabled;
29
+ var buttonBackgroundColor = (_theme$colors$button = theme.colors.button[appearance]) === null || _theme$colors$button === void 0 ? void 0 : (_theme$colors$button$ = _theme$colors$button.background) === null || _theme$colors$button$ === void 0 ? void 0 : _theme$colors$button$.base;
30
+ var isBackgroundColorTransparent = buttonBackgroundColor === 'transparent';
31
+
32
+ // If the button is disabled we want to check what the buttonBackgroundColor is, if it is transparent we want to return transparent, otherwise we want to return the buttonBackgroundColor with an opacity of 0.4. If the button is not disabled we want to return the buttonBackgroundColor.
33
+ return disabled ? isBackgroundColorTransparent ? 'transparent' : (0, _polished.rgba)(buttonBackgroundColor, 0.4) : buttonBackgroundColor;
34
+ }, function (_ref2) {
35
+ var disabled = _ref2.disabled;
36
+ return disabled && 'opacity: 1;';
56
37
  });
57
- var LoaderButton = function LoaderButton(_ref) {
58
- var _ref$appearance = _ref.appearance,
59
- appearance = _ref$appearance === void 0 ? 'unstyled' : _ref$appearance,
60
- _ref$isLoading = _ref.isLoading,
61
- isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
62
- disabled = _ref.disabled,
63
- loaderLabel = _ref.loaderLabel,
64
- children = _ref.children,
65
- rest = _objectWithoutProperties(_ref, _excluded);
66
- var _useTheme = (0, _styledComponents.useTheme)(),
67
- themeColorMode = _useTheme.mode;
68
- return /*#__PURE__*/React.createElement(_Button.default, _extends({
38
+ var LoaderButton = function LoaderButton(_ref3) {
39
+ var _ref3$isLoading = _ref3.isLoading,
40
+ isLoading = _ref3$isLoading === void 0 ? false : _ref3$isLoading,
41
+ disabled = _ref3.disabled,
42
+ loaderLabel = _ref3.loaderLabel,
43
+ children = _ref3.children,
44
+ _ref3$appearance = _ref3.appearance,
45
+ appearance = _ref3$appearance === void 0 ? 'unstyled' : _ref3$appearance,
46
+ rest = _objectWithoutProperties(_ref3, _excluded);
47
+ return /*#__PURE__*/React.createElement(StyledLoaderButton, _extends({
69
48
  disabled: disabled || isLoading,
70
49
  appearance: appearance,
71
50
  "data-qa-button-isloading": isLoading === true
@@ -80,11 +59,10 @@ var LoaderButton = function LoaderButton(_ref) {
80
59
  left: 0,
81
60
  right: 0,
82
61
  bottom: 0
83
- }, /*#__PURE__*/React.createElement(CustomLoader, {
62
+ }, /*#__PURE__*/React.createElement(_Loader.default, {
84
63
  text: loaderLabel,
85
64
  size: "small",
86
- delay: false,
87
- color: getColor(appearance, themeColorMode)
65
+ delay: false
88
66
  }))));
89
67
  };
90
68
  exports.LoaderButton = LoaderButton;
@@ -8,11 +8,13 @@ exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _styledComponents = _interopRequireDefault(require("styled-components"));
10
10
  var illustrationViewBoxes = _interopRequireWildcard(require("../IllustrationViewBoxes"));
11
+ var _excluded = ["name", "customFill", "height", "width"];
11
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
- // eslint-disable-next-line no-restricted-syntax
15
-
15
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
16
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
17
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
16
18
  var StyledSVG = _styledComponents.default.svg.withConfig({
17
19
  displayName: "SpotIllustration__StyledSVG",
18
20
  componentId: "sc-1j3815-0"
@@ -25,18 +27,20 @@ var SpotIllustration = function SpotIllustration(_ref) {
25
27
  var name = _ref.name,
26
28
  customFill = _ref.customFill,
27
29
  height = _ref.height,
28
- width = _ref.width;
30
+ width = _ref.width,
31
+ svgProps = _objectWithoutProperties(_ref, _excluded);
29
32
  var viewBox = illustrationViewBoxes[name];
30
33
  var viewBoxCoordinates = (viewBox === null || viewBox === void 0 ? void 0 : viewBox.split(' ')) || [];
31
34
  var defaultWidth = viewBoxCoordinates[2];
32
35
  var defaultHeight = viewBoxCoordinates[3];
33
- return /*#__PURE__*/_react.default.createElement(StyledSVG, {
36
+ return /*#__PURE__*/_react.default.createElement(StyledSVG, _extends({
37
+ role: "img",
34
38
  width: width ? width : defaultWidth,
35
39
  height: height ? height : defaultHeight,
36
40
  viewBox: viewBox,
37
41
  focusable: false,
38
42
  customFill: customFill
39
- }, /*#__PURE__*/_react.default.createElement("use", {
43
+ }, svgProps), /*#__PURE__*/_react.default.createElement("use", {
40
44
  xmlnsXlink: "http://www.w3.org/1999/xlink",
41
45
  xlinkHref: "#ssillustrationsvg-".concat(name)
42
46
  }));
@@ -11,14 +11,15 @@ var _Icon = _interopRequireDefault(require("../Icon"));
11
11
  var _Token = _interopRequireDefault(require("../Token"));
12
12
  var _styles2 = _interopRequireDefault(require("./styles"));
13
13
  var _util = require("./util");
14
+ var _TokenScreenReaderStatus = require("./TokenScreenReaderStatus");
14
15
  var _excluded = ["autoFocus", "autocomplete", "disabled", "isInvalid", "hasWarning", "id", "name", "placeholder", "required", "elemBefore", "elemAfter", "maxLength", "ariaDescribedby", "ariaLabel", "innerRef", "value", "onAddToken", "onRemoveToken", "onChangeTokens", "onClickToken", "onBlur", "onChange", "onFocus", "onKeyDown", "onKeyUp", "onPaste", "inputProps", "qa", "tokens"];
15
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
19
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
19
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
20
20
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
21
21
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
22
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
22
23
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
23
24
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
24
25
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -183,6 +184,10 @@ var TokenInput = /*#__PURE__*/function (_React$Component) {
183
184
  var activeId = this.state.activeToken;
184
185
  var id = token.id,
185
186
  tokenIconName = token.iconName,
187
+ _token$iconProps = token.iconProps,
188
+ iconProps = _token$iconProps === void 0 ? {
189
+ 'aria-hidden': true
190
+ } : _token$iconProps,
186
191
  value = token.value,
187
192
  valid = token.valid;
188
193
  var iconName = tokenIconName || defaultIconName;
@@ -201,13 +206,11 @@ var TokenInput = /*#__PURE__*/function (_React$Component) {
201
206
  }, /*#__PURE__*/React.createElement(_Box.default, {
202
207
  display: "flex",
203
208
  alignItems: "center"
204
- },
205
- // TODO: add the ability to take labels or aria props for accessibility
206
- iconName && /*#__PURE__*/React.createElement(_Icon.default, {
209
+ }, iconName && /*#__PURE__*/React.createElement(_Icon.default, _extends({
207
210
  name: iconName,
208
211
  size: "mini",
209
212
  pr: 300
210
- }), value));
213
+ }, iconProps)), value));
211
214
  }
212
215
  }, {
213
216
  key: "renderTokens",
@@ -266,7 +269,9 @@ var TokenInput = /*#__PURE__*/function (_React$Component) {
266
269
  focused: state.hasFocus
267
270
  }, rest), elemBefore && /*#__PURE__*/React.createElement(_styles.Accessory, {
268
271
  before: true
269
- }, elemBefore), tokens && this.renderTokens(tokens), /*#__PURE__*/React.createElement("input", _extends({
272
+ }, elemBefore), tokens && this.renderTokens(tokens), /*#__PURE__*/React.createElement(_TokenScreenReaderStatus.TokenScreenReaderStatus, {
273
+ tokens: tokens
274
+ }), /*#__PURE__*/React.createElement("input", _extends({
270
275
  "aria-describedby": ariaDescribedby,
271
276
  "aria-invalid": !!isInvalid,
272
277
  "aria-label": ariaLabel,
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TokenScreenReaderStatus = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _VisuallyHidden = require("../VisuallyHidden");
10
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
13
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
16
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
17
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
+ function usePrevious(value) {
19
+ var ref = (0, _react.useRef)();
20
+ (0, _react.useEffect)(function () {
21
+ ref.current = value;
22
+ });
23
+ return ref.current;
24
+ }
25
+ var TokenScreenReaderStatus = function TokenScreenReaderStatus(_ref) {
26
+ var tokens = _ref.tokens;
27
+ var prevTokens = usePrevious(tokens);
28
+ var _useState = (0, _react.useState)(''),
29
+ _useState2 = _slicedToArray(_useState, 2),
30
+ tokenStatus = _useState2[0],
31
+ setTokenStatus = _useState2[1];
32
+
33
+ // TODO: Use callbacks so consumers can pass localized messaging to the screen reader
34
+ (0, _react.useEffect)(function () {
35
+ if (prevTokens) {
36
+ if (prevTokens.length > tokens.length) {
37
+ setTokenStatus("".concat(prevTokens.filter(function (item) {
38
+ return tokens.indexOf(item) === -1;
39
+ })[0].value, " has been removed"));
40
+ }
41
+ if (prevTokens.length < tokens.length) {
42
+ setTokenStatus("".concat(tokens[tokens.length - 1].value, " has been added."));
43
+ }
44
+ }
45
+ }, [prevTokens, tokens, tokenStatus]);
46
+ return /*#__PURE__*/_react.default.createElement(_VisuallyHidden.VisuallyHidden, {
47
+ as: "div",
48
+ role: "status"
49
+ }, tokenStatus);
50
+ };
51
+ exports.TokenScreenReaderStatus = TokenScreenReaderStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"Label.d.ts","sourceRoot":"","sources":["../../../src/Label/Label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAWjD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC;IAChE,MAAM;CAWP"}
1
+ {"version":3,"file":"Label.d.ts","sourceRoot":"","sources":["../../../src/Label/Label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAYjD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC;IAChE,MAAM;CAmBP"}
@@ -4,5 +4,6 @@ export interface TypeLabelProps extends TypeTextProps {
4
4
  /** ID of the associated form element */
5
5
  htmlFor: string;
6
6
  children: React.ReactNode;
7
+ required?: boolean;
7
8
  }
8
9
  //# sourceMappingURL=LabelTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LabelTypes.d.ts","sourceRoot":"","sources":["../../../src/Label/LabelTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B"}
1
+ {"version":3,"file":"LabelTypes.d.ts","sourceRoot":"","sources":["../../../src/Label/LabelTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/Loader/styles.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AA8CnD,UAAU,mBAAoB,SAAQ,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,QAAA,MAAM,SAAS,0HA0Cd,CAAC;AAEF,eAAO,MAAM,IAAI,oIAEhB,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/Loader/styles.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AA+CnD,UAAU,mBAAoB,SAAQ,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,QAAA,MAAM,SAAS,0HAwCd,CAAC;AAEF,eAAO,MAAM,IAAI,oIAEhB,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import { TypeLoaderButtonProps } from './LoaderButtonTypes';
3
- export declare const LoaderButton: ({ appearance, isLoading, disabled, loaderLabel, children, ...rest }: TypeLoaderButtonProps) => React.JSX.Element;
3
+ export declare const LoaderButton: ({ isLoading, disabled, loaderLabel, children, appearance, ...rest }: TypeLoaderButtonProps) => React.JSX.Element;
4
4
  export default LoaderButton;
5
5
  //# sourceMappingURL=LoaderButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoaderButton.d.ts","sourceRoot":"","sources":["../../../src/LoaderButton/LoaderButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AA4D1D,eAAO,MAAM,YAAY,wEAOtB,qBAAqB,sBA2BvB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"LoaderButton.d.ts","sourceRoot":"","sources":["../../../src/LoaderButton/LoaderButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAqB1D,eAAO,MAAM,YAAY,wEAOtB,qBAAqB,sBAoBvB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import { TypeSpotIllustrationProps } from './SpotIllustrationTypes';
3
- declare const SpotIllustration: ({ name, customFill, height, width, }: TypeSpotIllustrationProps) => React.JSX.Element;
3
+ declare const SpotIllustration: ({ name, customFill, height, width, ...svgProps }: TypeSpotIllustrationProps) => React.JSX.Element;
4
4
  export default SpotIllustration;
5
5
  //# sourceMappingURL=SpotIllustration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpotIllustration.d.ts","sourceRoot":"","sources":["../../../src/SpotIllustration/SpotIllustration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAC,yBAAyB,EAAC,MAAM,yBAAyB,CAAC;AAYlE,QAAA,MAAM,gBAAgB,yCAKnB,yBAAyB,sBAmB3B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"SpotIllustration.d.ts","sourceRoot":"","sources":["../../../src/SpotIllustration/SpotIllustration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAC,yBAAyB,EAAC,MAAM,yBAAyB,CAAC;AAYlE,QAAA,MAAM,gBAAgB,qDAMnB,yBAAyB,sBAqB3B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,5 +1,6 @@
1
+ import * as React from 'react';
1
2
  import type { EnumIllustrationNames } from '../EnumIllustrationNames';
2
- export interface TypeSpotIllustrationProps {
3
+ export interface TypeSpotIllustrationProps extends React.ComponentPropsWithoutRef<'svg'> {
3
4
  name: EnumIllustrationNames;
4
5
  customFill?: 'red' | 'green' | 'yellow' | 'magenta' | 'purple' | 'aqua';
5
6
  height?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"SpotIllustrationTypes.d.ts","sourceRoot":"","sources":["../../../src/SpotIllustration/SpotIllustrationTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AAEtE,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"SpotIllustrationTypes.d.ts","sourceRoot":"","sources":["../../../src/SpotIllustration/SpotIllustrationTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AAEtE,MAAM,WAAW,yBACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAC7C,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SpotIllustrationTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpotIllustrationTypes.d.ts","sourceRoot":"","sources":["../../../../src/SpotIllustration/__tests__/SpotIllustrationTypes.tsx"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"TokenInput.d.ts","sourceRoot":"","sources":["../../../src/TokenInput/TokenInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAC,mBAAmB,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAE1E,aAAK,SAAS,GAAG;IACf,SAAS,EAAE,mBAAmB,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AASF,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK,CAAC,SAAS,CACrD,mBAAmB,EACnB,SAAS,CACV;IACC,gBAAgB,EAAE,MAAM,CAAC;gBAEb,KAAK,EAAE,mBAAmB;IAYtC,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,SAAS;IAelB,WAAW,CAAC,OAAO,EAAE,MAAM;IAK3B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE;IAoB9B,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM;IAiB5B,gBAAgB,MAAO,MAAM,cAAc,CAAC,gBAAgB,CAAC,UAO3D;IAEF,WAAW,MAAO,gBAAgB,CAAC,gBAAgB,CAAC,UAMlD;IAEF,UAAU,MAAO,gBAAgB,CAAC,gBAAgB,CAAC,UAMjD;IAEF,WAAW,MAAO,mBAAmB,CAAC,gBAAgB,CAAC,UAErD;IAEF,aAAa,MAAO,mBAAmB,CAAC,gBAAgB,CAAC,UAkBvD;IAEF,WAAW,MAAO,oBAAoB,CAAC,gBAAgB,CAAC,UAWtD;IAEF,gBAAgB,MACX,MAAM,cAAc,CAAC,iBAAiB,CAAC,SACnC,aAAa,UAQpB;IAEF,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,CAAC,SAAS;IA2BlD,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,SAAS;IAQtD,MAAM;CAmFP"}
1
+ {"version":3,"file":"TokenInput.d.ts","sourceRoot":"","sources":["../../../src/TokenInput/TokenInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAC,mBAAmB,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAG1E,aAAK,SAAS,GAAG;IACf,SAAS,EAAE,mBAAmB,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AASF,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK,CAAC,SAAS,CACrD,mBAAmB,EACnB,SAAS,CACV;IACC,gBAAgB,EAAE,MAAM,CAAC;gBAEb,KAAK,EAAE,mBAAmB;IAYtC,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,SAAS;IAelB,WAAW,CAAC,OAAO,EAAE,MAAM;IAK3B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE;IAoB9B,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM;IAiB5B,gBAAgB,MAAO,MAAM,cAAc,CAAC,gBAAgB,CAAC,UAO3D;IAEF,WAAW,MAAO,gBAAgB,CAAC,gBAAgB,CAAC,UAMlD;IAEF,UAAU,MAAO,gBAAgB,CAAC,gBAAgB,CAAC,UAMjD;IAEF,WAAW,MAAO,mBAAmB,CAAC,gBAAgB,CAAC,UAErD;IAEF,aAAa,MAAO,mBAAmB,CAAC,gBAAgB,CAAC,UAkBvD;IAEF,WAAW,MAAO,oBAAoB,CAAC,gBAAgB,CAAC,UAWtD;IAEF,gBAAgB,MACX,MAAM,cAAc,CAAC,iBAAiB,CAAC,SACnC,aAAa,UAQpB;IAEF,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,CAAC,SAAS;IAgClD,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,SAAS;IAQtD,MAAM;CAqFP"}
@@ -1,11 +1,12 @@
1
1
  import * as React from 'react';
2
- import type { EnumIconNames } from '../EnumIconNames';
3
2
  import type { TypeStyledComponentsCommonProps } from '../types/styled-components';
4
3
  import type { TypeSystemCommonProps } from '../types/system-props';
5
4
  import { TypeQaProps } from '../types/shared';
5
+ import type { TypeIconProps, TypeIconName } from '../Icon';
6
6
  export interface TypeTokenSpec {
7
7
  id: string;
8
- iconName?: EnumIconNames;
8
+ iconName?: TypeIconName;
9
+ iconProps?: Omit<TypeIconProps, 'name'>;
9
10
  value: string;
10
11
  valid?: boolean;
11
12
  }
@@ -13,7 +14,7 @@ export interface TypeBaseTokenInputProps {
13
14
  /** ID of the form element, should match the "for" value of the associated label */
14
15
  id: string;
15
16
  name: string;
16
- iconName?: EnumIconNames;
17
+ iconName?: TypeIconName;
17
18
  /** Array of delimiter key names */
18
19
  delimiters?: string[];
19
20
  /** Current input text. Required when controlling the input text */
@@ -1 +1 @@
1
- {"version":3,"file":"TokenInputTypes.d.ts","sourceRoot":"","sources":["../../../src/TokenInput/TokenInputTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TokenInputTypes.d.ts","sourceRoot":"","sources":["../../../src/TokenInput/TokenInputTypes.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,8 @@ var LabelBase = function LabelBase(_ref) {
26
26
  as: as
27
27
  }));
28
28
  };
29
+
30
+ // TODO: Screen readers should read "required" instead of "*"
29
31
  var StyledLabel = styled(LabelBase).withConfig({
30
32
  displayName: "Label__StyledLabel",
31
33
  componentId: "sc-dh0olx-0"
@@ -40,12 +42,19 @@ var Label = /*#__PURE__*/function (_React$Component) {
40
42
  _createClass(Label, [{
41
43
  key: "render",
42
44
  value: function render() {
45
+ var _this$props = this.props,
46
+ htmlFor = _this$props.htmlFor,
47
+ required = _this$props.required,
48
+ children = _this$props.children;
43
49
  return /*#__PURE__*/React.createElement(StyledLabel, _extends({
44
50
  fontSize: 200,
45
51
  fontWeight: "semibold",
46
52
  color: "text.headline",
47
- "data-qa-label": this.props.htmlFor
48
- }, this.props));
53
+ "data-qa-label": htmlFor
54
+ }, this.props), children, required && /*#__PURE__*/React.createElement(Text, {
55
+ ml: 100,
56
+ "aria-hidden": true
57
+ }, "*"));
49
58
  }
50
59
  }]);
51
60
  return Label;
@@ -4,10 +4,10 @@ import { COMMON } from "../utils/system-props";
4
4
  var getSize = function getSize(size) {
5
5
  var spinnerSize = Math.round(size * 1);
6
6
  var borderWidth = Math.round(size * 0.1);
7
- return css(["width:", "px;height:", "px;&:after{width:", "px;height:", "px;box-sizing:border-box;border-width:", "px;box-shadow:", ";}.no-cssanimations &::after{background-size:", "px;}"], size, size, spinnerSize, spinnerSize, borderWidth, function (_ref) {
7
+ return css(["width:", "px;height:", "px;box-shadow:", ";&:after{width:", "px;height:", "px;box-sizing:border-box;border-width:", "px;}.no-cssanimations &::after{background-size:", "px;}"], size, size, function (_ref) {
8
8
  var theme = _ref.theme;
9
- return "inset 0 0 0 2px ".concat(theme.colors.neutral[600]);
10
- }, spinnerSize);
9
+ return "0 0 0 2px ".concat(theme.colors.neutral[600], ", \n inset 0 0 0 ").concat(borderWidth + 2, "px ").concat(theme.colors.neutral[600]);
10
+ }, spinnerSize, spinnerSize, borderWidth, spinnerSize);
11
11
  };
12
12
  var spin = keyframes(["from{transform:translate(-50%,-50%) rotate(0deg);}to{transform:translate(-50%,-50%) rotate(360deg);}"]);
13
13
  var delayAnimation = keyframes(["0%{opacity:0;}80%{opacity:0;}100%{opacity:1;}"]);
@@ -16,13 +16,10 @@ var Container = styled.div.attrs({
16
16
  }).withConfig({
17
17
  displayName: "styles__Container",
18
18
  componentId: "sc-1edimrk-0"
19
- })(["position:relative;margin:0 auto;padding:0;overflow:hidden;border-radius:100%;box-shadow:", ";animation:", ";&:after{position:absolute;top:50%;left:50%;background:transparent;border-style:solid;border-radius:100%;content:'';transition:opacity 250ms;border-color:", ";animation:", ";}", " ", ""], function (_ref2) {
20
- var theme = _ref2.theme;
21
- return "0 0 0 2px ".concat(theme.colors.neutral[600]);
22
- }, function (props) {
19
+ })(["position:relative;margin:0 auto;padding:0;overflow:hidden;border-radius:100%;animation:", ";&:after{position:absolute;top:50%;left:50%;background:transparent;border-style:solid;border-radius:100%;content:'';transition:opacity 250ms;border-color:", ";animation:", ";}", " ", ""], function (props) {
23
20
  return props.delay ? css(["", " 2s 1;"], delayAnimation) : 'none';
24
- }, function (_ref3) {
25
- var theme = _ref3.theme;
21
+ }, function (_ref2) {
22
+ var theme = _ref2.theme;
26
23
  return "".concat(theme.colors.neutral[0], " ").concat(theme.colors.neutral[0], " ").concat(theme.colors.neutral[600], " ").concat(theme.colors.neutral[600]);
27
24
  }, function (props) {
28
25
  return props.delay ? css(["", " 2.25s infinite linear,", " 2s 1"], spin, delayAnimation) : css(["", " 2.25s infinite linear"], spin);
@@ -1,61 +1,40 @@
1
- var _excluded = ["appearance", "isLoading", "disabled", "loaderLabel", "children"];
1
+ var _excluded = ["isLoading", "disabled", "loaderLabel", "children", "appearance"];
2
2
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
3
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
4
4
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
5
5
  import * as React from 'react';
6
6
  import { rgba } from 'polished';
7
- import styled, { css, useTheme } from 'styled-components';
8
- import { COLOR_NEUTRAL_0, COLOR_NEUTRAL_1000 } from '@sproutsocial/seeds-color';
7
+ import styled from 'styled-components';
9
8
  import Box from "../Box";
10
9
  import Button from "../Button";
11
10
  import Loader from "../Loader";
12
- // TODO: This is a temporary solution to get the loader button to work with dark mode
13
- var getColor = function getColor(appearance, themeColorMode) {
14
- var selectColorBasedOnMode = themeColorMode === 'dark' ? 'light' : 'dark';
15
- switch (appearance) {
16
- case 'unstyled':
17
- return selectColorBasedOnMode;
18
- case 'primary':
19
- return 'light';
20
- case 'secondary':
21
- return selectColorBasedOnMode;
22
- case 'destructive':
23
- return 'light';
24
- case 'placeholder':
25
- return selectColorBasedOnMode;
26
- case 'pill':
27
- return selectColorBasedOnMode;
28
-
29
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
30
- // @ts-ignore - as noted below, this case shouldn't exist
31
- case 'outline':
32
- // This case doesn't even make sense.... There's no outline button
33
- // TODO: investigate if this is even used anywhere
34
- return 'light';
35
- default:
36
- return 'light';
37
- }
38
- };
39
- var CustomLoader = styled(Loader).withConfig({
40
- displayName: "LoaderButton__CustomLoader",
11
+ var StyledLoaderButton = styled(Button).withConfig({
12
+ displayName: "LoaderButton__StyledLoaderButton",
41
13
  componentId: "sc-taipe0-0"
42
- })(["&:after{", " ", "}"], function (p) {
43
- return p.color === 'light' && css(["border-color:", " ", " ", " ", ";"], rgba(COLOR_NEUTRAL_0, 0.5), rgba(COLOR_NEUTRAL_0, 0.5), rgba(COLOR_NEUTRAL_0, 1), rgba(COLOR_NEUTRAL_0, 1.0));
44
- }, function (p) {
45
- return p.color === 'dark' && css(["border-color:", " ", " ", " ", ";"], rgba(COLOR_NEUTRAL_1000, 0.5), rgba(COLOR_NEUTRAL_1000, 0.5), rgba(COLOR_NEUTRAL_1000, 1), rgba(COLOR_NEUTRAL_1000, 1.0));
14
+ })(["background-color:", ";", ""], function (_ref) {
15
+ var _theme$colors$button, _theme$colors$button$;
16
+ var theme = _ref.theme,
17
+ appearance = _ref.appearance,
18
+ disabled = _ref.disabled;
19
+ var buttonBackgroundColor = (_theme$colors$button = theme.colors.button[appearance]) === null || _theme$colors$button === void 0 ? void 0 : (_theme$colors$button$ = _theme$colors$button.background) === null || _theme$colors$button$ === void 0 ? void 0 : _theme$colors$button$.base;
20
+ var isBackgroundColorTransparent = buttonBackgroundColor === 'transparent';
21
+
22
+ // If the button is disabled we want to check what the buttonBackgroundColor is, if it is transparent we want to return transparent, otherwise we want to return the buttonBackgroundColor with an opacity of 0.4. If the button is not disabled we want to return the buttonBackgroundColor.
23
+ return disabled ? isBackgroundColorTransparent ? 'transparent' : rgba(buttonBackgroundColor, 0.4) : buttonBackgroundColor;
24
+ }, function (_ref2) {
25
+ var disabled = _ref2.disabled;
26
+ return disabled && 'opacity: 1;';
46
27
  });
47
- export var LoaderButton = function LoaderButton(_ref) {
48
- var _ref$appearance = _ref.appearance,
49
- appearance = _ref$appearance === void 0 ? 'unstyled' : _ref$appearance,
50
- _ref$isLoading = _ref.isLoading,
51
- isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
52
- disabled = _ref.disabled,
53
- loaderLabel = _ref.loaderLabel,
54
- children = _ref.children,
55
- rest = _objectWithoutProperties(_ref, _excluded);
56
- var _useTheme = useTheme(),
57
- themeColorMode = _useTheme.mode;
58
- return /*#__PURE__*/React.createElement(Button, _extends({
28
+ export var LoaderButton = function LoaderButton(_ref3) {
29
+ var _ref3$isLoading = _ref3.isLoading,
30
+ isLoading = _ref3$isLoading === void 0 ? false : _ref3$isLoading,
31
+ disabled = _ref3.disabled,
32
+ loaderLabel = _ref3.loaderLabel,
33
+ children = _ref3.children,
34
+ _ref3$appearance = _ref3.appearance,
35
+ appearance = _ref3$appearance === void 0 ? 'unstyled' : _ref3$appearance,
36
+ rest = _objectWithoutProperties(_ref3, _excluded);
37
+ return /*#__PURE__*/React.createElement(StyledLoaderButton, _extends({
59
38
  disabled: disabled || isLoading,
60
39
  appearance: appearance,
61
40
  "data-qa-button-isloading": isLoading === true
@@ -70,11 +49,10 @@ export var LoaderButton = function LoaderButton(_ref) {
70
49
  left: 0,
71
50
  right: 0,
72
51
  bottom: 0
73
- }, /*#__PURE__*/React.createElement(CustomLoader, {
52
+ }, /*#__PURE__*/React.createElement(Loader, {
74
53
  text: loaderLabel,
75
54
  size: "small",
76
- delay: false,
77
- color: getColor(appearance, themeColorMode)
55
+ delay: false
78
56
  }))));
79
57
  };
80
58
  export default LoaderButton;
@@ -1,3 +1,7 @@
1
+ var _excluded = ["name", "customFill", "height", "width"];
2
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
4
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
1
5
  import React from 'react';
2
6
  import styled from 'styled-components';
3
7
  // eslint-disable-next-line no-restricted-syntax
@@ -14,18 +18,20 @@ var SpotIllustration = function SpotIllustration(_ref) {
14
18
  var name = _ref.name,
15
19
  customFill = _ref.customFill,
16
20
  height = _ref.height,
17
- width = _ref.width;
21
+ width = _ref.width,
22
+ svgProps = _objectWithoutProperties(_ref, _excluded);
18
23
  var viewBox = illustrationViewBoxes[name];
19
24
  var viewBoxCoordinates = (viewBox === null || viewBox === void 0 ? void 0 : viewBox.split(' ')) || [];
20
25
  var defaultWidth = viewBoxCoordinates[2];
21
26
  var defaultHeight = viewBoxCoordinates[3];
22
- return /*#__PURE__*/React.createElement(StyledSVG, {
27
+ return /*#__PURE__*/React.createElement(StyledSVG, _extends({
28
+ role: "img",
23
29
  width: width ? width : defaultWidth,
24
30
  height: height ? height : defaultHeight,
25
31
  viewBox: viewBox,
26
32
  focusable: false,
27
33
  customFill: customFill
28
- }, /*#__PURE__*/React.createElement("use", {
34
+ }, svgProps), /*#__PURE__*/React.createElement("use", {
29
35
  xmlnsXlink: "http://www.w3.org/1999/xlink",
30
36
  xlinkHref: "#ssillustrationsvg-".concat(name)
31
37
  }));
@@ -1,8 +1,8 @@
1
1
  var _excluded = ["autoFocus", "autocomplete", "disabled", "isInvalid", "hasWarning", "id", "name", "placeholder", "required", "elemBefore", "elemAfter", "maxLength", "ariaDescribedby", "ariaLabel", "innerRef", "value", "onAddToken", "onRemoveToken", "onChangeTokens", "onClickToken", "onBlur", "onChange", "onFocus", "onKeyDown", "onKeyUp", "onPaste", "inputProps", "qa", "tokens"];
2
2
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
3
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
5
4
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
5
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
6
6
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7
7
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
8
8
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -23,6 +23,7 @@ import Icon from "../Icon";
23
23
  import Token from "../Token";
24
24
  import Container from "./styles";
25
25
  import { asTokenSpec, delimitersAsRegExp } from "./util";
26
+ import { TokenScreenReaderStatus } from "./TokenScreenReaderStatus";
26
27
  var DefaultDelimiters = [',', 'Enter'];
27
28
  var ControlledPropNames = ['value', 'hasFocus', 'activeToken'];
28
29
  var TokenInput = /*#__PURE__*/function (_React$Component) {
@@ -174,6 +175,10 @@ var TokenInput = /*#__PURE__*/function (_React$Component) {
174
175
  var activeId = this.state.activeToken;
175
176
  var id = token.id,
176
177
  tokenIconName = token.iconName,
178
+ _token$iconProps = token.iconProps,
179
+ iconProps = _token$iconProps === void 0 ? {
180
+ 'aria-hidden': true
181
+ } : _token$iconProps,
177
182
  value = token.value,
178
183
  valid = token.valid;
179
184
  var iconName = tokenIconName || defaultIconName;
@@ -192,13 +197,11 @@ var TokenInput = /*#__PURE__*/function (_React$Component) {
192
197
  }, /*#__PURE__*/React.createElement(Box, {
193
198
  display: "flex",
194
199
  alignItems: "center"
195
- },
196
- // TODO: add the ability to take labels or aria props for accessibility
197
- iconName && /*#__PURE__*/React.createElement(Icon, {
200
+ }, iconName && /*#__PURE__*/React.createElement(Icon, _extends({
198
201
  name: iconName,
199
202
  size: "mini",
200
203
  pr: 300
201
- }), value));
204
+ }, iconProps)), value));
202
205
  }
203
206
  }, {
204
207
  key: "renderTokens",
@@ -257,7 +260,9 @@ var TokenInput = /*#__PURE__*/function (_React$Component) {
257
260
  focused: state.hasFocus
258
261
  }, rest), elemBefore && /*#__PURE__*/React.createElement(Accessory, {
259
262
  before: true
260
- }, elemBefore), tokens && this.renderTokens(tokens), /*#__PURE__*/React.createElement("input", _extends({
263
+ }, elemBefore), tokens && this.renderTokens(tokens), /*#__PURE__*/React.createElement(TokenScreenReaderStatus, {
264
+ tokens: tokens
265
+ }), /*#__PURE__*/React.createElement("input", _extends({
261
266
  "aria-describedby": ariaDescribedby,
262
267
  "aria-invalid": !!isInvalid,
263
268
  "aria-label": ariaLabel,
@@ -0,0 +1,43 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
5
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ /* eslint-disable react/prop-types */
8
+ import React from 'react';
9
+ import { useEffect, useRef, useState } from 'react';
10
+ import { VisuallyHidden } from "../VisuallyHidden";
11
+ function usePrevious(value) {
12
+ var ref = useRef();
13
+ useEffect(function () {
14
+ ref.current = value;
15
+ });
16
+ return ref.current;
17
+ }
18
+ export var TokenScreenReaderStatus = function TokenScreenReaderStatus(_ref) {
19
+ var tokens = _ref.tokens;
20
+ var prevTokens = usePrevious(tokens);
21
+ var _useState = useState(''),
22
+ _useState2 = _slicedToArray(_useState, 2),
23
+ tokenStatus = _useState2[0],
24
+ setTokenStatus = _useState2[1];
25
+
26
+ // TODO: Use callbacks so consumers can pass localized messaging to the screen reader
27
+ useEffect(function () {
28
+ if (prevTokens) {
29
+ if (prevTokens.length > tokens.length) {
30
+ setTokenStatus("".concat(prevTokens.filter(function (item) {
31
+ return tokens.indexOf(item) === -1;
32
+ })[0].value, " has been removed"));
33
+ }
34
+ if (prevTokens.length < tokens.length) {
35
+ setTokenStatus("".concat(tokens[tokens.length - 1].value, " has been added."));
36
+ }
37
+ }
38
+ }, [prevTokens, tokens, tokenStatus]);
39
+ return /*#__PURE__*/React.createElement(VisuallyHidden, {
40
+ as: "div",
41
+ role: "status"
42
+ }, tokenStatus);
43
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sproutsocial/racine",
3
- "version": "15.0.1",
3
+ "version": "15.1.0",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "__flow__",