@sproutsocial/racine 11.2.3-dependencies.0 → 11.2.4-linkupdate.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Change Log
2
2
 
3
+ ## 11.2.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 206bd32: copy updates to the TypeProps comments that power Seeds prop tables
8
+
9
+ ## 11.2.3
10
+
11
+ ### Patch Changes
12
+
13
+ - 514d738: Patch badge component flow issue
14
+
3
15
  ## 11.2.2
4
16
 
5
17
  ### Patch Changes
@@ -14,4 +14,9 @@ describe("Avatar", () => {
14
14
  const { container } = render(<Avatar name="Test User" />);
15
15
  expect(container.textContent).toEqual("TU");
16
16
  });
17
+
18
+ it("should set the correct font size", () => {
19
+ const { getByText } = render(<Avatar name="Test User" />);
20
+ expect(getByText("TU")).toHaveStyleRule("font-size", "16px");
21
+ });
17
22
  });
@@ -7,7 +7,7 @@ import Box from "../Box";
7
7
  type TypeProps = {
8
8
  children?: React.Node,
9
9
  /** DEPRECATED: Use children instead of text */
10
- text: React.Node,
10
+ text?: React.Node,
11
11
  /** Size default is deprecated in favor of small and large */
12
12
  size?: "small" | "large" | "default",
13
13
  badgeColor?:
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { boolean, text, number } from "@storybook/addon-knobs";
2
3
  import Button from "./index";
3
4
  import Icon from "../Icon";
4
5
  import Box from "../Box";
@@ -7,140 +8,155 @@ export default {
7
8
  title: "Button",
8
9
  };
9
10
 
10
- export const defaultStory = (args) => (
11
- <Button {...args} onClick={() => alert("Testing...")}>
11
+ export const defaultStory = () => (
12
+ <Button
13
+ appearance={text("appearance", "default")}
14
+ onClick={() => alert("Testing...")}
15
+ >
12
16
  Default
13
17
  </Button>
14
18
  );
15
19
 
16
- defaultStory.args = { appearance: "default" };
17
-
18
20
  defaultStory.story = {
19
21
  name: "Default",
20
22
  };
21
23
 
22
- export const primary = (args) => (
23
- <Button {...args} onClick={() => alert("Testing...")}>
24
+ export const primary = () => (
25
+ <Button
26
+ appearance={text("appearance", "primary")}
27
+ onClick={() => alert("Testing...")}
28
+ >
24
29
  Primary Button
25
30
  </Button>
26
31
  );
27
32
 
28
- primary.args = { appearance: "primary" };
29
-
30
33
  primary.story = {
31
34
  name: "Primary",
32
35
  };
33
36
 
34
- export const secondary = (args) => <Button {...args}>Secondary Button</Button>;
35
-
36
- secondary.args = { appearance: "secondary" };
37
+ export const secondary = () => (
38
+ <Button appearance={text("appearance", "secondary")}>Secondary Button</Button>
39
+ );
37
40
 
38
41
  secondary.story = {
39
42
  name: "Secondary",
40
43
  };
41
44
 
42
- export const destructive = (args) => (
43
- <Button {...args}>Destructive Button</Button>
45
+ export const destructive = () => (
46
+ <Button appearance={text("appearance", "destructive")}>
47
+ Destructive Button
48
+ </Button>
44
49
  );
45
50
 
46
- destructive.args = { appearance: "destructive" };
47
51
  destructive.story = {
48
52
  name: "Destructive",
49
53
  };
50
54
 
51
- export const placeholder = (args) => (
52
- <Button {...args}>Placeholder Button</Button>
55
+ export const placeholder = () => (
56
+ <Button appearance={text("appearance", "placeholder")}>
57
+ Placeholder Button
58
+ </Button>
53
59
  );
54
60
 
55
- placeholder.args = { appearance: "placeholder" };
56
61
  placeholder.story = {
57
62
  name: "Placeholder",
58
63
  };
59
64
 
60
- export const largeButton = (args) => <Button {...args}>Large Button</Button>;
61
- largeButton.args = { size: "large", appearance: "primary" };
65
+ export const largeButton = () => (
66
+ <Button
67
+ appearance={text("appearance", "primary")}
68
+ size={text("size", "large")}
69
+ >
70
+ Large Button
71
+ </Button>
72
+ );
62
73
 
63
74
  largeButton.story = {
64
75
  name: "Large button",
65
76
  };
66
77
 
67
- export const pillButton = (args) => (
78
+ export const pillButton = () => (
68
79
  <Box bg="container.background.base" p={400}>
69
- <Button {...args}>
80
+ <Button appearance={text("shape", "pill")}>
70
81
  <Icon name="reply" mr={350} />
71
82
  Pill Button
72
83
  </Button>
73
84
  </Box>
74
85
  );
75
- pillButton.args = { appearance: "pill" };
86
+
76
87
  pillButton.story = {
77
88
  name: "Pill button",
78
89
  };
79
90
 
80
- export const pillIconOnlyButton = (args) => (
91
+ export const pillIconOnlyButton = () => (
81
92
  <Box bg="container.background.base" p={400}>
82
- <Button {...args} ariaLabel="This is a label">
93
+ <Button appearance={text("shape", "pill")} ariaLabel="This is a label">
83
94
  <Icon name="circle-check-outline" />
84
95
  </Button>
85
96
  </Box>
86
97
  );
87
98
 
88
- pillIconOnlyButton.args = { appearance: "pill" };
89
99
  pillIconOnlyButton.story = {
90
100
  name: "Pill icon only button",
91
101
  };
92
102
 
93
- export const activeButton = (args) => <Button {...args}>Active Button</Button>;
103
+ export const activeButton = () => (
104
+ <Button
105
+ appearance={text("appearance", "secondary")}
106
+ active={boolean("active", true)}
107
+ >
108
+ Active Button
109
+ </Button>
110
+ );
94
111
 
95
- activeButton.args = { appearance: "secondary", active: true };
96
112
  activeButton.story = {
97
113
  name: "Active button",
98
114
  };
99
115
 
100
- export const buttonAsALink = (args) => (
101
- <Button {...args}>Button using anchor element</Button>
116
+ export const buttonAsALink = () => (
117
+ <Button
118
+ href={text("href", "http://sproutsocial.style")}
119
+ external={boolean("external", true)}
120
+ appearance={text("appearance", "primary")}
121
+ >
122
+ Button using anchor element
123
+ </Button>
102
124
  );
103
- buttonAsALink.args = {
104
- appearance: "primary",
105
- external: true,
106
- href: "http://sproutsocial.style",
107
- };
125
+
108
126
  buttonAsALink.story = {
109
127
  name: "Button as a link",
110
128
  };
111
129
 
112
- export const disabledButton = (args) => (
113
- <Button {...args}>This Button is disabled</Button>
130
+ export const disabledButton = () => (
131
+ <Button
132
+ appearance={text("appearance", "primary")}
133
+ disabled={text("disabled", "true")}
134
+ >
135
+ This Button is disabled
136
+ </Button>
114
137
  );
115
- disabledButton.args = {
116
- appearance: "primary",
117
- disabled: true,
118
- };
138
+
119
139
  disabledButton.story = {
120
140
  name: "Disabled button",
121
141
  };
122
142
 
123
- export const fullWidthButton = (args) => (
124
- <Button {...args}>Full-Width Button</Button>
143
+ export const fullWidthButton = () => (
144
+ <Button appearance={text("appearance", "primary")} width={number("width", 1)}>
145
+ Full-Width Button
146
+ </Button>
125
147
  );
126
- fullWidthButton.args = {
127
- appearance: "primary",
128
- width: 1,
129
- };
148
+
130
149
  fullWidthButton.story = {
131
150
  name: "Full width button",
132
151
  };
133
152
 
134
- export const withIcon = (args) => (
135
- <Button {...args}>
153
+ export const withIcon = () => (
154
+ <Button appearance={text("appearance", "secondary")}>
136
155
  <Icon name="twitter" mr={350} />
137
156
  Secondary Button
138
157
  </Button>
139
158
  );
140
159
 
141
- withIcon.args = {
142
- appearance: "secondary",
143
- };
144
160
  withIcon.story = {
145
161
  name: "With icon",
146
162
  };
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import { render } from "../utils/react-testing-library";
3
3
  import "jest-styled-components";
4
4
  import CharacterCounter from "./";
5
+ import { COLOR_RED_800 } from "@sproutsocial/seeds-color";
5
6
 
6
7
  describe.only("CharacterCounter", () => {
7
8
  it("should render properly", () => {
@@ -12,4 +13,11 @@ describe.only("CharacterCounter", () => {
12
13
 
13
14
  expect(getByText(remainingNumber.toString())).toBeTruthy();
14
15
  });
16
+
17
+ it("should render properly with overlimit values", () => {
18
+ const { getByText } = render(
19
+ <CharacterCounter currentValue={2} maxValue={1} />
20
+ );
21
+ expect(getByText("-1")).toHaveStyleRule("color", COLOR_RED_800);
22
+ });
15
23
  });
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import { render } from "../utils/react-testing-library";
3
3
  import "jest-styled-components";
4
4
  import ChartLegend from "./";
5
+ import { CONTRAST_THEME, COMPARE_THEME } from "../utils/chartColors";
5
6
 
6
7
  describe("ChartLegend", () => {
7
8
  let legendLabelsArray = [{ name: "Label One" }, { name: "Label Two" }];
@@ -14,4 +15,40 @@ describe("ChartLegend", () => {
14
15
  expect(getByText("Label One")).toBeTruthy();
15
16
  expect(getByText("Label Two")).toBeTruthy();
16
17
  });
18
+
19
+ it("should render the correct theme", () => {
20
+ const { getAllByDataQaLabel } = render(
21
+ <ChartLegend legendLabels={legendLabelsArray} theme="contrast" />
22
+ );
23
+
24
+ expect(getAllByDataQaLabel({ swatch: "" })[0]).toHaveStyleRule(
25
+ "background-color",
26
+ CONTRAST_THEME[0]
27
+ );
28
+
29
+ expect(getAllByDataQaLabel({ swatch: "" })[1]).toHaveStyleRule(
30
+ "background-color",
31
+ CONTRAST_THEME[1]
32
+ );
33
+ });
34
+
35
+ it("should display a custom color", () => {
36
+ const newLegendLabelsArray = [
37
+ { name: "Label One", color: "#000" },
38
+ { name: "Label Two" },
39
+ ];
40
+ const { getAllByDataQaLabel } = render(
41
+ <ChartLegend legendLabels={newLegendLabelsArray} />
42
+ );
43
+
44
+ expect(getAllByDataQaLabel({ swatch: "" })[0]).toHaveStyleRule(
45
+ "background-color",
46
+ "#000"
47
+ );
48
+
49
+ expect(getAllByDataQaLabel({ swatch: "" })[1]).toHaveStyleRule(
50
+ "background-color",
51
+ COMPARE_THEME[1]
52
+ );
53
+ });
17
54
  });
@@ -97,6 +97,7 @@ describe("EmptyState", () => {
97
97
  );
98
98
  const element = getByText("Reload Page");
99
99
  expect(element).toBeTruthy();
100
+ expect(element).toHaveStyleRule("color", "#FFFFFF");
100
101
  });
101
102
 
102
103
  it("should render a secondary button", async () => {
@@ -104,7 +105,7 @@ describe("EmptyState", () => {
104
105
  <EmptyState
105
106
  media={
106
107
  <Image
107
- alt="No assets matching your search or filters"
108
+ alt="No assets matching yoursearch or filters"
108
109
  src="https://cl.ly/db498c7682df/download/analytics.svg"
109
110
  m={0}
110
111
  />
@@ -117,5 +118,6 @@ describe("EmptyState", () => {
117
118
  );
118
119
  const element = getByText("I'll do this later");
119
120
  expect(element).toBeTruthy();
121
+ expect(element).toHaveStyleRule("color", "#515e5f");
120
122
  });
121
123
  });
@@ -8,10 +8,11 @@ type TypeProps = {
8
8
  /** Optional prop to make the URL open in a new tab */
9
9
  external?: boolean,
10
10
  children: React.Node,
11
+ /** Setting this prop will cause the component to be rendered as a link */
11
12
  href?: string,
12
13
  /** Disables user action and applies a disabled style to the component */
13
14
  disabled?: boolean,
14
- /** Setting this prop will cause the component to be rendered as a button instead of an anchor) */
15
+ /** Can be used in addition to an href but still renders as a link. Omitting href will render as button */
15
16
  onClick?: (e: SyntheticEvent<HTMLButtonElement>) => void,
16
17
  as?: $PropertyType<TypeStyledComponentsCommonProps, "as">,
17
18
  underline?: boolean,
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import "jest-styled-components";
3
3
  import { render } from "../utils/react-testing-library";
4
4
  import Link from "./";
5
+ import { TYPOGRAPHY_SIZE_600 } from "@sproutsocial/seeds-typography";
5
6
 
6
7
  describe("Racine Link", () => {
7
8
  it("should render in an anchor tag", () => {
@@ -82,6 +83,10 @@ describe("Racine Link", () => {
82
83
  );
83
84
 
84
85
  expect(getByText("Link as span").tagName).toEqual("SPAN");
86
+ expect(getByText("Link as span")).toHaveStyleRule(
87
+ "font-size",
88
+ TYPOGRAPHY_SIZE_600.fontSize
89
+ );
85
90
  });
86
91
 
87
92
  it("Has type attribute as button when rendered as a button element", () => {
@@ -94,4 +99,9 @@ describe("Racine Link", () => {
94
99
  expect(getByText("Link").type).toBeFalsy();
95
100
  expect(getByText("Link").type).not.toEqual("button");
96
101
  });
102
+
103
+ it("Can render with an underline", () => {
104
+ const { getByText } = render(<Link underline>Link</Link>);
105
+ expect(getByText("Link")).toHaveStyleRule("text-decoration", "underline");
106
+ });
97
107
  });
@@ -8,4 +8,18 @@ describe("Loader", () => {
8
8
  const { getByText } = render(<Loader />);
9
9
  expect(getByText("Loading")).toBeTruthy();
10
10
  });
11
+
12
+ it("should render with small size class", () => {
13
+ const { getByDataQaLabel } = render(<Loader size="small" />);
14
+ expect(getByDataQaLabel({ loader: "" })).toHaveStyleRule("width", "20px");
15
+ });
16
+
17
+ it("should render with light theme", () => {
18
+ const { getByDataQaLabel } = render(<Loader color="light" />);
19
+ expect(getByDataQaLabel({ loader: "" })).toHaveStyleRule(
20
+ "border-color",
21
+ "rgba(255,255,255,0.3) rgba(255,255,255,0.3) rgba(255,255,255,0.7) rgba(255,255,255,0.7)",
22
+ { modifier: ":after" }
23
+ );
24
+ });
11
25
  });
@@ -14,12 +14,12 @@ exports[`Menu AsMenuButton should match snapshot 1`] = `
14
14
  fill: currentColor;
15
15
  }
16
16
 
17
- _:-ms-fullscreen .c2,
17
+ _:-ms-fullscreen .c3,
18
18
  html .c3 {
19
19
  width: 16px;
20
20
  }
21
21
 
22
- .pdf-page .c2 {
22
+ .pdf-page .c3 {
23
23
  width: 16px;
24
24
  }
25
25
 
@@ -7,6 +7,25 @@ import { COLOR_PURPLE_300 } from "@sproutsocial/seeds-color";
7
7
  afterEach(() => cleanup());
8
8
 
9
9
  describe("Modal", () => {
10
+ it("renders a custom background color", () => {
11
+ // Use baseElement since it renders in a Portal
12
+ const { baseElement } = render(
13
+ <Modal
14
+ isOpen={true}
15
+ label="Label"
16
+ bg={COLOR_PURPLE_300}
17
+ onClose={() => {}}
18
+ closeButtonLabel="Close this dialog"
19
+ >
20
+ ajdsfljasdlfjlasdjf
21
+ </Modal>
22
+ );
23
+ expect(baseElement.querySelector(".ReactModal__Content")).toHaveStyleRule(
24
+ "background-color",
25
+ COLOR_PURPLE_300
26
+ );
27
+ });
28
+
10
29
  it("should close on overlay click and esc", () => {
11
30
  const onClose = jest.fn();
12
31
  const { baseElement, getByText, getByLabelText } = render(
@@ -4,10 +4,49 @@ import "jest-styled-components";
4
4
  import Text from "./";
5
5
 
6
6
  describe("Text", () => {
7
+ it("does not set word break or truncated styles by default", () => {
8
+ const { getByDataQaLabel } = render(<Text children="Default" />);
9
+ const component = getByDataQaLabel({ text: "Default" });
10
+ expect(component).not.toHaveStyleRule("word-break", "break-word");
11
+ expect(component).not.toHaveStyleRule("text-overflow", "ellipsis");
12
+ });
13
+
14
+ it("sets word break styles when breakWord is true", () => {
15
+ const { getByDataQaLabel } = render(
16
+ <Text breakWord children="Word Break" />
17
+ );
18
+ const component = getByDataQaLabel({ text: "Word Break" });
19
+ expect(component).toHaveStyleRule("word-break", "break-word");
20
+ });
21
+
22
+ it("sets truncated styles when truncated is true", () => {
23
+ const { getByDataQaLabel } = render(
24
+ <Text truncated children="Truncated" />
25
+ );
26
+ const component = getByDataQaLabel({ text: "Truncated" });
27
+ expect(component).toHaveStyleRule("text-overflow", "ellipsis");
28
+ });
29
+
30
+ it("is italic when isItalicized is true", () => {
31
+ const { getByDataQaLabel } = render(
32
+ <Text isItalicized children="Italicized" />
33
+ );
34
+ const component = getByDataQaLabel({ text: "Italicized" });
35
+ expect(component).toHaveStyleRule("font-style", "italic");
36
+ });
37
+
7
38
  it("outputs the correct string/content", () => {
8
39
  const { getByText } = render(
9
40
  <Text children="Supercalifragilisticexpialidocious" />
10
41
  );
11
42
  expect(getByText("Supercalifragilisticexpialidocious")).toBeTruthy();
12
43
  });
44
+
45
+ it("displays a custom size if using fontSize", () => {
46
+ const { getByText } = render(
47
+ <Text children="Custom sized text!" fontSize={1000} />
48
+ );
49
+ const component = getByText("Custom sized text!");
50
+ expect(component).toHaveStyleRule("font-size", "76px");
51
+ });
13
52
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sproutsocial/racine",
3
- "version": "11.2.3-dependencies.0",
3
+ "version": "11.2.4-linkupdate.0",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "__flow__",
@@ -64,7 +64,6 @@
64
64
  ]
65
65
  },
66
66
  "dependencies": {
67
- "@storybook/addon-controls": "^6.4.19",
68
67
  "@styled-system/theme-get": "^5.1.2",
69
68
  "classnames": "^2.2.6",
70
69
  "lodash.curry": "^4.1.1",
@@ -78,14 +77,14 @@
78
77
  "react-popper": "^1.3.3",
79
78
  "react-spring": "^8.0.25",
80
79
  "react-toastify": "^6.0.5",
81
- "react-virtualized": "9.22.3",
80
+ "react-virtualized": "9.18.5",
82
81
  "scroll-into-view-if-needed": "1.1.0",
83
82
  "styled-system": "^5.1.5",
84
83
  "use-measure": "^0.2.2"
85
84
  },
86
85
  "devDependencies": {
87
86
  "@babel/cli": "^7.5.5",
88
- "@babel/core": "^7.12.9",
87
+ "@babel/core": "^7.4.5",
89
88
  "@babel/plugin-proposal-class-properties": "^7.4.4",
90
89
  "@babel/plugin-syntax-dynamic-import": "^7.0.0",
91
90
  "@babel/preset-env": "^7.8.0",
@@ -100,22 +99,20 @@
100
99
  "@sproutsocial/seeds-networkcolor": "^2.9.0",
101
100
  "@sproutsocial/seeds-space": "^0.4.7",
102
101
  "@sproutsocial/seeds-typography": "^3.0.1",
103
- "@storybook/addon-a11y": "^6.4.19",
104
- "@storybook/addon-actions": "^6.4.19",
105
- "@storybook/addon-controls": "^6.4.19",
106
- "@storybook/addon-knobs": "^6.4.0",
107
- "@storybook/addon-storysource": "^6.4.19",
108
- "@storybook/addon-viewport": "^6.4.19",
109
- "@storybook/addons": "^6.4.19",
102
+ "@storybook/addon-a11y": "^6.1.11",
103
+ "@storybook/addon-actions": "^6.3.8",
104
+ "@storybook/addon-knobs": "^6.1.11",
105
+ "@storybook/addon-storysource": "^6.1.11",
106
+ "@storybook/addon-viewport": "^6.1.11",
107
+ "@storybook/addons": "^6.1.11",
110
108
  "@storybook/react": "^6.4.19",
111
- "@storybook/theming": "^6.4.19",
109
+ "@storybook/theming": "^6.1.11",
112
110
  "@testing-library/react": "^11.2.2",
113
111
  "@testing-library/user-event": "^13.0.0",
114
- "axios": "^0.26.1",
115
112
  "babel-core": "^7.0.0-bridge",
116
113
  "babel-eslint": "10.1.0",
117
114
  "babel-jest": "26.1.0",
118
- "babel-loader": "8.2.3",
115
+ "babel-loader": "8.0.6",
119
116
  "babel-plugin-inline-import": "^3.0.0",
120
117
  "babel-plugin-polished": "^1.1.0",
121
118
  "babel-plugin-styled-components": "^1.10.0",
@@ -143,7 +140,7 @@
143
140
  "jest": "26.1.0",
144
141
  "jest-axe": "3.4.0",
145
142
  "jest-dom": "^3.5.0",
146
- "jest-styled-components": "7.0.8",
143
+ "jest-styled-components": "7.0.0-beta.1",
147
144
  "jscodeshift": "^0.6.4",
148
145
  "json-to-scss": "^1.6.2",
149
146
  "lint-staged": "^10.2.11",
@@ -151,15 +148,15 @@
151
148
  "npm-run-all": "^4.1.2",
152
149
  "outdent": "^0.7.0",
153
150
  "pify": "^4.0.1",
154
- "playroom": "^0.27.9",
151
+ "playroom": "^0.22.2",
155
152
  "prettier": "^2.0.5",
156
153
  "prop-types": "^15.6.1",
157
154
  "react": "16.12.0",
158
155
  "react-dates": "^21.8.0",
159
156
  "react-dom": "16.12.0",
160
157
  "rimraf": "^2.6.3",
161
- "storybook-dark-mode": "^1.0.9",
162
- "styled-components": "5.3.3",
158
+ "storybook-dark-mode": "^1.0.7",
159
+ "styled-components": "5.0.0-rc.2",
163
160
  "stylelint": "^13.8.0",
164
161
  "stylelint-config-recommended": "^2.2.0",
165
162
  "stylelint-config-styled-components": "^0.1.1",
@@ -184,7 +181,6 @@
184
181
  "styled-components": "^5.0.0-rc.2"
185
182
  },
186
183
  "resolutions": {
187
- "**/eslint-import-resolver-node": "0.3.4",
188
184
  "lodash": "^4.17.21",
189
185
  "react-popper/create-react-context": "^0.3.0"
190
186
  },