@sproutsocial/racine 11.3.0-beta.1 → 11.3.0-beta.4

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.
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.legacyBadgeColors = void 0;
5
+ var defaultPurple = {
6
+ color: "colors.text.body",
7
+ background: "colors.container.background.decorative.purple"
8
+ };
9
+ var suggestion = {
10
+ color: "colors.text.body",
11
+ background: "colors.container.background.decorative.blue"
12
+ };
13
+ var passive = {
14
+ color: "colors.text.body",
15
+ background: "colors.container.background.decorative.neutral"
16
+ };
17
+ var primary = {
18
+ color: "colors.text.body",
19
+ background: "colors.container.background.decorative.blue"
20
+ };
21
+ var secondary = {
22
+ color: "colors.text.body",
23
+ background: "colors.container.background.decorative.yellow"
24
+ };
25
+ var common = {
26
+ color: "colors.text.inverse",
27
+ background: "colors.aqua.600"
28
+ };
29
+ var approval = {
30
+ color: "colors.text.body",
31
+ background: "colors.container.background.decorative.orange"
32
+ }; //Deprecated former "types"
33
+
34
+ var legacyBadgeColors = {
35
+ primary: primary,
36
+ secondary: secondary,
37
+ passive: passive,
38
+ common: common,
39
+ approval: approval,
40
+ default: defaultPurple,
41
+ suggestion: suggestion
42
+ };
43
+ exports.legacyBadgeColors = legacyBadgeColors;
@@ -5,9 +5,13 @@ exports.default = void 0;
5
5
 
6
6
  var React = _interopRequireWildcard(require("react"));
7
7
 
8
+ var _Icon = _interopRequireDefault(require("../Icon"));
9
+
8
10
  var _styles = _interopRequireDefault(require("./styles"));
9
11
 
10
- var _excluded = ["size", "type", "tip", "text"];
12
+ var _Box = _interopRequireDefault(require("../Box"));
13
+
14
+ var _excluded = ["children", "text", "iconName", "type", "tip", "size", "badgeColor"];
11
15
 
12
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
17
 
@@ -19,43 +23,41 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
19
23
 
20
24
  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; }
21
25
 
22
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
23
-
24
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
25
-
26
- var Badge = /*#__PURE__*/function (_React$Component) {
27
- _inheritsLoose(Badge, _React$Component);
28
-
29
- function Badge() {
30
- return _React$Component.apply(this, arguments) || this;
26
+ var Badge = function Badge(_ref) {
27
+ var children = _ref.children,
28
+ text = _ref.text,
29
+ iconName = _ref.iconName,
30
+ type = _ref.type,
31
+ tip = _ref.tip,
32
+ _ref$size = _ref.size,
33
+ size = _ref$size === void 0 ? "small" : _ref$size,
34
+ _ref$badgeColor = _ref.badgeColor,
35
+ badgeColor = _ref$badgeColor === void 0 ? "blue" : _ref$badgeColor,
36
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
37
+
38
+ if (children && text) {
39
+ throw new Error("can't use both `children` and `text` props. Text is deprecated, consider using children.");
31
40
  }
32
41
 
33
- var _proto = Badge.prototype;
34
-
35
- _proto.render = function render() {
36
- var _this$props = this.props,
37
- size = _this$props.size,
38
- type = _this$props.type,
39
- tip = _this$props.tip,
40
- text = _this$props.text,
41
- rest = _objectWithoutPropertiesLoose(_this$props, _excluded);
42
-
43
- return /*#__PURE__*/React.createElement(_styles.default, _extends({
44
- type: type,
45
- small: size === "small",
46
- "data-tip": tip,
47
- "data-qa-badge": text || "",
48
- "data-qa-badge-type": type,
49
- "data-qa-badge-tip": tip || "" // $FlowIssue - upgrade v0.112.0
50
-
51
- }, rest), text);
52
- };
53
-
54
- return Badge;
55
- }(React.Component);
56
-
57
- exports.default = Badge;
58
- Badge.defaultProps = {
59
- type: "primary",
60
- size: "default"
61
- };
42
+ return /*#__PURE__*/React.createElement(_styles.default, _extends({}, rest, {
43
+ // size previously included default, which currently maps to small. Once consumers have updated this can be simplified.
44
+ size: size === "default" ? "large" : size,
45
+ badgeColor: badgeColor,
46
+ "data-tip": tip,
47
+ "data-qa-badge": text || "",
48
+ "data-qa-badge-type": type,
49
+ "data-qa-badge-tip": tip || "",
50
+ type: type && type
51
+ }), /*#__PURE__*/React.createElement(_Box.default, {
52
+ display: "flex",
53
+ alignItems: "center",
54
+ JustifyContent: "center"
55
+ }, iconName ? /*#__PURE__*/React.createElement(_Icon.default, {
56
+ mr: 200,
57
+ name: iconName,
58
+ size: size === "small" ? "mini" : "default"
59
+ }) : null, children || text));
60
+ };
61
+
62
+ var _default = Badge;
63
+ exports.default = _default;
@@ -3,46 +3,30 @@
3
3
  exports.__esModule = true;
4
4
  exports.default = void 0;
5
5
 
6
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
6
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
7
7
 
8
8
  var _systemProps = require("../utils/system-props");
9
9
 
10
10
  var _themeGet = require("@styled-system/theme-get");
11
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); }
13
-
14
- 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; }
15
-
16
- var colors = {
17
- primary: "colors.neutral.0",
18
- secondary: "colors.neutral.800",
19
- passive: "colors.neutral.800",
20
- common: "colors.neutral.0",
21
- approval: "colors.neutral.800",
22
- default: "colors.neutral.0",
23
- suggestion: "colors.neutral.900"
24
- };
25
- var backgroundColors = {
26
- primary: "colors.blue.700",
27
- secondary: "colors.yellow.500",
28
- passive: "colors.neutral.200",
29
- common: "colors.aqua.600",
30
- approval: "colors.orange.300",
31
- default: "colors.purple.700",
32
- suggestion: "colors.blue.300"
33
- }; // eslint-disable-next-line prettier/prettier
12
+ var _constants = require("./constants");
34
13
 
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ // eslint-disable-next-line prettier/prettier
35
17
  var Container = _styledComponents.default.span.withConfig({
36
18
  displayName: "styles__Container",
37
19
  componentId: "sc-g1g76b-0"
38
- })(["display:inline-block;text-align:center;border-radius:50px;font-family:", ";padding:", ";", " ", " ", ""], function (props) {
39
- return props.theme.fontFamily;
40
- }, function (props) {
41
- return props.small ? props.theme.space[200] + " " + props.theme.space[300] : props.theme.space[300] + " " + props.theme.space[350];
42
- }, function (props) {
43
- return props.small ? props.theme.typography[100] : props.theme.typography[200];
44
- }, function (props) {
45
- return (0, _styledComponents.css)(["color:", ";background:", ";"], (0, _themeGet.themeGet)(colors[props.type])(props), (0, _themeGet.themeGet)(backgroundColors[props.type])(props));
20
+ })(["font-family:", ";", ";border-radius:9999px;line-height:16px;display:inline-block;color:", ";background:", ";padding:", ";", ";"], function (p) {
21
+ return p.theme.fontFamily;
22
+ }, function (p) {
23
+ return p.size === "small" ? p.theme.typography[100] : p.theme.typography[200];
24
+ }, function (p) {
25
+ return p.type ? (0, _themeGet.themeGet)(_constants.legacyBadgeColors[p.type].color) : p.theme.colors.text.body;
26
+ }, function (p) {
27
+ return p.type ? (0, _themeGet.themeGet)(_constants.legacyBadgeColors[p.type].background) : p.theme.colors.container.background.decorative[p.badgeColor];
28
+ }, function (p) {
29
+ return p.size === "small" ? p.theme.space[0] + " " + p.theme.space[200] : "" + p.theme.space[300];
46
30
  }, _systemProps.COMMON);
47
31
 
48
32
  var _default = Container;
@@ -11,7 +11,7 @@ var _Button = _interopRequireDefault(require("../Button"));
11
11
 
12
12
  var _Icon = _interopRequireDefault(require("../Icon"));
13
13
 
14
- var _excluded = ["autoComplete", "autoFocus", "disabled", "readOnly", "isInvalid", "hasWarning", "id", "name", "placeholder", "type", "required", "value", "elemBefore", "elemAfter", "maxLength", "ariaLabel", "ariaDescribedby", "clearButtonLabel", "innerRef", "onBlur", "onChange", "onClear", "onFocus", "onKeyDown", "onKeyUp", "onPaste", "inputProps", "qa", "appearance"];
14
+ var _excluded = ["autoComplete", "autoFocus", "disabled", "readOnly", "isInvalid", "hasWarning", "id", "name", "placeholder", "type", "required", "value", "elemBefore", "elemAfter", "maxLength", "ariaLabel", "ariaDescribedby", "clearButtonLabel", "innerRef", "onBlur", "onChange", "onClear", "onFocus", "onKeyDown", "onKeyUp", "onPaste", "inputProps", "qa", "appearance", "size"];
15
15
 
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
@@ -32,14 +32,44 @@ var InputContext = /*#__PURE__*/React.createContext({});
32
32
  var ClearButton = function ClearButton() {
33
33
  var _React$useContext = React.useContext(InputContext),
34
34
  handleClear = _React$useContext.handleClear,
35
- clearButtonLabel = _React$useContext.clearButtonLabel;
35
+ clearButtonLabel = _React$useContext.clearButtonLabel,
36
+ hasValue = _React$useContext.hasValue,
37
+ size = _React$useContext.size; // Hide the button when there is no text to clear.
38
+
39
+
40
+ if (!hasValue) {
41
+ return null;
42
+ } // Cut down the padding for size small Inputs so that the focus ring won't go outside the bounds of the Input.
43
+ // This adjustment is handled automatically for default and large Inputs via Button's size. There is no "small" Button.
44
+
45
+
46
+ var py = size === "small" ? 100 : undefined;
47
+ var px = size === "small" ? 200 : undefined;
48
+ var buttonSize = size === "small" ? "default" : size; // Warn if clearButtonLabel is not included, so that the unlocalized fallback will not be mistaken for a proper label.
49
+
50
+ if (!clearButtonLabel) {
51
+ console.warn("Warning: clearButtonLabel prop is required when using Input.ClearButton. Please pass a localized label to Input.");
52
+ }
36
53
 
37
54
  return /*#__PURE__*/React.createElement(_Button.default, {
38
- onClick: handleClear
55
+ onClick: handleClear,
56
+ size: buttonSize,
57
+ py: py,
58
+ px: px
39
59
  }, /*#__PURE__*/React.createElement(_Icon.default, {
40
60
  name: "circlex",
41
61
  title: clearButtonLabel || "Clear"
42
62
  }));
63
+ }; // Used for positioning elementAfter. This logic will detect if the element is a ClearButton,
64
+ // regardless of whether it was manually passed as elemAfter or automatically added to a search Input.
65
+
66
+
67
+ var isClearButton = function isClearButton(elem) {
68
+ if (elem != null && elem.type) {
69
+ return elem.type.displayName === "Input.ClearButton";
70
+ }
71
+
72
+ return false;
43
73
  };
44
74
 
45
75
  var Input = /*#__PURE__*/function (_React$Component) {
@@ -59,7 +89,10 @@ var Input = /*#__PURE__*/function (_React$Component) {
59
89
  };
60
90
 
61
91
  _this.handleClear = function (e) {
62
- return _this.props.onClear == null ? void 0 : _this.props.onClear(e);
92
+ var _this$props$innerRef, _this$props$innerRef$;
93
+
94
+ _this.props.onClear == null ? void 0 : _this.props.onClear(e);
95
+ (_this$props$innerRef = _this.props.innerRef) == null ? void 0 : (_this$props$innerRef$ = _this$props$innerRef.current) == null ? void 0 : _this$props$innerRef$.focus();
63
96
  };
64
97
 
65
98
  _this.handleChange = function (e) {
@@ -88,8 +121,6 @@ var Input = /*#__PURE__*/function (_React$Component) {
88
121
  var _proto = Input.prototype;
89
122
 
90
123
  _proto.render = function render() {
91
- var _elementAfter$type;
92
-
93
124
  var _this$props = this.props,
94
125
  autoComplete = _this$props.autoComplete,
95
126
  autoFocus = _this$props.autoFocus,
@@ -122,6 +153,7 @@ var Input = /*#__PURE__*/function (_React$Component) {
122
153
  _this$props$qa = _this$props.qa,
123
154
  qa = _this$props$qa === void 0 ? {} : _this$props$qa,
124
155
  appearance = _this$props.appearance,
156
+ size = _this$props.size,
125
157
  rest = _objectWithoutPropertiesLoose(_this$props, _excluded); // Convert autoComplete from a boolean prop to a string value.
126
158
 
127
159
 
@@ -134,7 +166,8 @@ var Input = /*#__PURE__*/function (_React$Component) {
134
166
 
135
167
  var elementBefore = type === "search" && !elemBefore ? /*#__PURE__*/React.createElement(_Icon.default, {
136
168
  name: "search",
137
- ariaHidden: true
169
+ ariaHidden: true,
170
+ color: "icon.base"
138
171
  }) : elemBefore; // Do not add a ClearButton if no onClear callback is provided or if an elemAfter prop was passed.
139
172
 
140
173
  var elementAfter = type === "search" && onClear && !elemAfter ? /*#__PURE__*/React.createElement(ClearButton, null) : elemAfter;
@@ -144,12 +177,15 @@ var Input = /*#__PURE__*/function (_React$Component) {
144
177
  disabled: disabled,
145
178
  invalid: !!isInvalid,
146
179
  warning: hasWarning,
147
- appearance: appearance // $FlowIssue - upgrade v0.112.0
180
+ appearance: appearance,
181
+ size: size // $FlowIssue - upgrade v0.112.0
148
182
 
149
183
  }, rest), /*#__PURE__*/React.createElement(InputContext.Provider, {
150
184
  value: {
151
185
  handleClear: this.handleClear,
152
- clearButtonLabel: clearButtonLabel
186
+ hasValue: !!value,
187
+ clearButtonLabel: clearButtonLabel,
188
+ size: size
153
189
  }
154
190
  }, elementBefore && /*#__PURE__*/React.createElement(_styles.Accessory, {
155
191
  before: true
@@ -179,10 +215,8 @@ var Input = /*#__PURE__*/function (_React$Component) {
179
215
  "data-qa-input-isdisabled": disabled === true,
180
216
  "data-qa-input-isrequired": required === true
181
217
  }, qa, inputProps)), elementAfter && /*#__PURE__*/React.createElement(_styles.Accessory, {
182
- after: true // Used for positioning. This logic will detect if the element is a ClearButton,
183
- // regardless of whether it was manually passed as elemAfter or automatically added to a search Input.
184
- ,
185
- isClearButton: (elementAfter == null ? void 0 : (_elementAfter$type = elementAfter.type) == null ? void 0 : _elementAfter$type.prototype) === Input.ClearButton.prototype
218
+ after: true,
219
+ isClearButton: isClearButton(elementAfter)
186
220
  }, elementAfter)));
187
221
  };
188
222
 
@@ -0,0 +1,38 @@
1
+ var defaultPurple = {
2
+ color: "colors.text.body",
3
+ background: "colors.container.background.decorative.purple"
4
+ };
5
+ var suggestion = {
6
+ color: "colors.text.body",
7
+ background: "colors.container.background.decorative.blue"
8
+ };
9
+ var passive = {
10
+ color: "colors.text.body",
11
+ background: "colors.container.background.decorative.neutral"
12
+ };
13
+ var primary = {
14
+ color: "colors.text.body",
15
+ background: "colors.container.background.decorative.blue"
16
+ };
17
+ var secondary = {
18
+ color: "colors.text.body",
19
+ background: "colors.container.background.decorative.yellow"
20
+ };
21
+ var common = {
22
+ color: "colors.text.inverse",
23
+ background: "colors.aqua.600"
24
+ };
25
+ var approval = {
26
+ color: "colors.text.body",
27
+ background: "colors.container.background.decorative.orange"
28
+ }; //Deprecated former "types"
29
+
30
+ export var legacyBadgeColors = {
31
+ primary: primary,
32
+ secondary: secondary,
33
+ passive: passive,
34
+ common: common,
35
+ approval: approval,
36
+ default: defaultPurple,
37
+ suggestion: suggestion
38
+ };
@@ -1,49 +1,48 @@
1
- var _excluded = ["size", "type", "tip", "text"];
1
+ var _excluded = ["children", "text", "iconName", "type", "tip", "size", "badgeColor"];
2
2
 
3
3
  function _extends() { _extends = Object.assign || 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
4
 
5
5
  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; }
6
6
 
7
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
8
-
9
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
10
-
11
7
  import * as React from "react";
8
+ import Icon from "../Icon";
12
9
  import Container from "./styles";
13
-
14
- var Badge = /*#__PURE__*/function (_React$Component) {
15
- _inheritsLoose(Badge, _React$Component);
16
-
17
- function Badge() {
18
- return _React$Component.apply(this, arguments) || this;
10
+ import Box from "../Box";
11
+
12
+ var Badge = function Badge(_ref) {
13
+ var children = _ref.children,
14
+ text = _ref.text,
15
+ iconName = _ref.iconName,
16
+ type = _ref.type,
17
+ tip = _ref.tip,
18
+ _ref$size = _ref.size,
19
+ size = _ref$size === void 0 ? "small" : _ref$size,
20
+ _ref$badgeColor = _ref.badgeColor,
21
+ badgeColor = _ref$badgeColor === void 0 ? "blue" : _ref$badgeColor,
22
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
23
+
24
+ if (children && text) {
25
+ throw new Error("can't use both `children` and `text` props. Text is deprecated, consider using children.");
19
26
  }
20
27
 
21
- var _proto = Badge.prototype;
22
-
23
- _proto.render = function render() {
24
- var _this$props = this.props,
25
- size = _this$props.size,
26
- type = _this$props.type,
27
- tip = _this$props.tip,
28
- text = _this$props.text,
29
- rest = _objectWithoutPropertiesLoose(_this$props, _excluded);
30
-
31
- return /*#__PURE__*/React.createElement(Container, _extends({
32
- type: type,
33
- small: size === "small",
34
- "data-tip": tip,
35
- "data-qa-badge": text || "",
36
- "data-qa-badge-type": type,
37
- "data-qa-badge-tip": tip || "" // $FlowIssue - upgrade v0.112.0
38
-
39
- }, rest), text);
40
- };
41
-
42
- return Badge;
43
- }(React.Component);
44
-
45
- Badge.defaultProps = {
46
- type: "primary",
47
- size: "default"
28
+ return /*#__PURE__*/React.createElement(Container, _extends({}, rest, {
29
+ // size previously included default, which currently maps to small. Once consumers have updated this can be simplified.
30
+ size: size === "default" ? "large" : size,
31
+ badgeColor: badgeColor,
32
+ "data-tip": tip,
33
+ "data-qa-badge": text || "",
34
+ "data-qa-badge-type": type,
35
+ "data-qa-badge-tip": tip || "",
36
+ type: type && type
37
+ }), /*#__PURE__*/React.createElement(Box, {
38
+ display: "flex",
39
+ alignItems: "center",
40
+ JustifyContent: "center"
41
+ }, iconName ? /*#__PURE__*/React.createElement(Icon, {
42
+ mr: 200,
43
+ name: iconName,
44
+ size: size === "small" ? "mini" : "default"
45
+ }) : null, children || text));
48
46
  };
49
- export { Badge as default };
47
+
48
+ export default Badge;
@@ -1,35 +1,20 @@
1
- import styled, { css } from "styled-components";
1
+ import styled from "styled-components";
2
2
  import { COMMON } from "../utils/system-props";
3
3
  import { themeGet } from "@styled-system/theme-get";
4
- var colors = {
5
- primary: "colors.neutral.0",
6
- secondary: "colors.neutral.800",
7
- passive: "colors.neutral.800",
8
- common: "colors.neutral.0",
9
- approval: "colors.neutral.800",
10
- default: "colors.neutral.0",
11
- suggestion: "colors.neutral.900"
12
- };
13
- var backgroundColors = {
14
- primary: "colors.blue.700",
15
- secondary: "colors.yellow.500",
16
- passive: "colors.neutral.200",
17
- common: "colors.aqua.600",
18
- approval: "colors.orange.300",
19
- default: "colors.purple.700",
20
- suggestion: "colors.blue.300"
21
- }; // eslint-disable-next-line prettier/prettier
4
+ import { legacyBadgeColors } from "./constants"; // eslint-disable-next-line prettier/prettier
22
5
 
23
6
  var Container = styled.span.withConfig({
24
7
  displayName: "styles__Container",
25
8
  componentId: "sc-g1g76b-0"
26
- })(["display:inline-block;text-align:center;border-radius:50px;font-family:", ";padding:", ";", " ", " ", ""], function (props) {
27
- return props.theme.fontFamily;
28
- }, function (props) {
29
- return props.small ? props.theme.space[200] + " " + props.theme.space[300] : props.theme.space[300] + " " + props.theme.space[350];
30
- }, function (props) {
31
- return props.small ? props.theme.typography[100] : props.theme.typography[200];
32
- }, function (props) {
33
- return css(["color:", ";background:", ";"], themeGet(colors[props.type])(props), themeGet(backgroundColors[props.type])(props));
9
+ })(["font-family:", ";", ";border-radius:9999px;line-height:16px;display:inline-block;color:", ";background:", ";padding:", ";", ";"], function (p) {
10
+ return p.theme.fontFamily;
11
+ }, function (p) {
12
+ return p.size === "small" ? p.theme.typography[100] : p.theme.typography[200];
13
+ }, function (p) {
14
+ return p.type ? themeGet(legacyBadgeColors[p.type].color) : p.theme.colors.text.body;
15
+ }, function (p) {
16
+ return p.type ? themeGet(legacyBadgeColors[p.type].background) : p.theme.colors.container.background.decorative[p.badgeColor];
17
+ }, function (p) {
18
+ return p.size === "small" ? p.theme.space[0] + " " + p.theme.space[200] : "" + p.theme.space[300];
34
19
  }, COMMON);
35
20
  export default Container;
@@ -1,4 +1,4 @@
1
- var _excluded = ["autoComplete", "autoFocus", "disabled", "readOnly", "isInvalid", "hasWarning", "id", "name", "placeholder", "type", "required", "value", "elemBefore", "elemAfter", "maxLength", "ariaLabel", "ariaDescribedby", "clearButtonLabel", "innerRef", "onBlur", "onChange", "onClear", "onFocus", "onKeyDown", "onKeyUp", "onPaste", "inputProps", "qa", "appearance"];
1
+ var _excluded = ["autoComplete", "autoFocus", "disabled", "readOnly", "isInvalid", "hasWarning", "id", "name", "placeholder", "type", "required", "value", "elemBefore", "elemAfter", "maxLength", "ariaLabel", "ariaDescribedby", "clearButtonLabel", "innerRef", "onBlur", "onChange", "onClear", "onFocus", "onKeyDown", "onKeyUp", "onPaste", "inputProps", "qa", "appearance", "size"];
2
2
 
3
3
  function _extends() { _extends = Object.assign || 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
4
 
@@ -17,14 +17,44 @@ var InputContext = /*#__PURE__*/React.createContext({});
17
17
  var ClearButton = function ClearButton() {
18
18
  var _React$useContext = React.useContext(InputContext),
19
19
  handleClear = _React$useContext.handleClear,
20
- clearButtonLabel = _React$useContext.clearButtonLabel;
20
+ clearButtonLabel = _React$useContext.clearButtonLabel,
21
+ hasValue = _React$useContext.hasValue,
22
+ size = _React$useContext.size; // Hide the button when there is no text to clear.
23
+
24
+
25
+ if (!hasValue) {
26
+ return null;
27
+ } // Cut down the padding for size small Inputs so that the focus ring won't go outside the bounds of the Input.
28
+ // This adjustment is handled automatically for default and large Inputs via Button's size. There is no "small" Button.
29
+
30
+
31
+ var py = size === "small" ? 100 : undefined;
32
+ var px = size === "small" ? 200 : undefined;
33
+ var buttonSize = size === "small" ? "default" : size; // Warn if clearButtonLabel is not included, so that the unlocalized fallback will not be mistaken for a proper label.
34
+
35
+ if (!clearButtonLabel) {
36
+ console.warn("Warning: clearButtonLabel prop is required when using Input.ClearButton. Please pass a localized label to Input.");
37
+ }
21
38
 
22
39
  return /*#__PURE__*/React.createElement(Button, {
23
- onClick: handleClear
40
+ onClick: handleClear,
41
+ size: buttonSize,
42
+ py: py,
43
+ px: px
24
44
  }, /*#__PURE__*/React.createElement(Icon, {
25
45
  name: "circlex",
26
46
  title: clearButtonLabel || "Clear"
27
47
  }));
48
+ }; // Used for positioning elementAfter. This logic will detect if the element is a ClearButton,
49
+ // regardless of whether it was manually passed as elemAfter or automatically added to a search Input.
50
+
51
+
52
+ var isClearButton = function isClearButton(elem) {
53
+ if (elem != null && elem.type) {
54
+ return elem.type.displayName === "Input.ClearButton";
55
+ }
56
+
57
+ return false;
28
58
  };
29
59
 
30
60
  var Input = /*#__PURE__*/function (_React$Component) {
@@ -44,7 +74,10 @@ var Input = /*#__PURE__*/function (_React$Component) {
44
74
  };
45
75
 
46
76
  _this.handleClear = function (e) {
47
- return _this.props.onClear == null ? void 0 : _this.props.onClear(e);
77
+ var _this$props$innerRef, _this$props$innerRef$;
78
+
79
+ _this.props.onClear == null ? void 0 : _this.props.onClear(e);
80
+ (_this$props$innerRef = _this.props.innerRef) == null ? void 0 : (_this$props$innerRef$ = _this$props$innerRef.current) == null ? void 0 : _this$props$innerRef$.focus();
48
81
  };
49
82
 
50
83
  _this.handleChange = function (e) {
@@ -73,8 +106,6 @@ var Input = /*#__PURE__*/function (_React$Component) {
73
106
  var _proto = Input.prototype;
74
107
 
75
108
  _proto.render = function render() {
76
- var _elementAfter$type;
77
-
78
109
  var _this$props = this.props,
79
110
  autoComplete = _this$props.autoComplete,
80
111
  autoFocus = _this$props.autoFocus,
@@ -107,6 +138,7 @@ var Input = /*#__PURE__*/function (_React$Component) {
107
138
  _this$props$qa = _this$props.qa,
108
139
  qa = _this$props$qa === void 0 ? {} : _this$props$qa,
109
140
  appearance = _this$props.appearance,
141
+ size = _this$props.size,
110
142
  rest = _objectWithoutPropertiesLoose(_this$props, _excluded); // Convert autoComplete from a boolean prop to a string value.
111
143
 
112
144
 
@@ -119,7 +151,8 @@ var Input = /*#__PURE__*/function (_React$Component) {
119
151
 
120
152
  var elementBefore = type === "search" && !elemBefore ? /*#__PURE__*/React.createElement(Icon, {
121
153
  name: "search",
122
- ariaHidden: true
154
+ ariaHidden: true,
155
+ color: "icon.base"
123
156
  }) : elemBefore; // Do not add a ClearButton if no onClear callback is provided or if an elemAfter prop was passed.
124
157
 
125
158
  var elementAfter = type === "search" && onClear && !elemAfter ? /*#__PURE__*/React.createElement(ClearButton, null) : elemAfter;
@@ -129,12 +162,15 @@ var Input = /*#__PURE__*/function (_React$Component) {
129
162
  disabled: disabled,
130
163
  invalid: !!isInvalid,
131
164
  warning: hasWarning,
132
- appearance: appearance // $FlowIssue - upgrade v0.112.0
165
+ appearance: appearance,
166
+ size: size // $FlowIssue - upgrade v0.112.0
133
167
 
134
168
  }, rest), /*#__PURE__*/React.createElement(InputContext.Provider, {
135
169
  value: {
136
170
  handleClear: this.handleClear,
137
- clearButtonLabel: clearButtonLabel
171
+ hasValue: !!value,
172
+ clearButtonLabel: clearButtonLabel,
173
+ size: size
138
174
  }
139
175
  }, elementBefore && /*#__PURE__*/React.createElement(Accessory, {
140
176
  before: true
@@ -164,10 +200,8 @@ var Input = /*#__PURE__*/function (_React$Component) {
164
200
  "data-qa-input-isdisabled": disabled === true,
165
201
  "data-qa-input-isrequired": required === true
166
202
  }, qa, inputProps)), elementAfter && /*#__PURE__*/React.createElement(Accessory, {
167
- after: true // Used for positioning. This logic will detect if the element is a ClearButton,
168
- // regardless of whether it was manually passed as elemAfter or automatically added to a search Input.
169
- ,
170
- isClearButton: (elementAfter == null ? void 0 : (_elementAfter$type = elementAfter.type) == null ? void 0 : _elementAfter$type.prototype) === Input.ClearButton.prototype
203
+ after: true,
204
+ isClearButton: isClearButton(elementAfter)
171
205
  }, elementAfter)));
172
206
  };
173
207
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sproutsocial/racine",
3
- "version": "11.3.0-beta.1",
3
+ "version": "11.3.0-beta.4",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "__flow__",