@sproutsocial/racine 8.1.4 → 8.4.0-collapsible-updates.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,35 +1,5 @@
1
1
  # Change Log
2
2
 
3
- ## 8.1.4
4
-
5
- ### Patch Changes
6
-
7
- - c920778: removing duplicate icon
8
-
9
- ## 8.1.3
10
-
11
- ### Patch Changes
12
-
13
- - 90dbdfc: update autosizer import
14
-
15
- ## 8.1.2
16
-
17
- ### Patch Changes
18
-
19
- - e5bb567: update bigcommerce icon name
20
-
21
- ## 8.1.1
22
-
23
- ### Patch Changes
24
-
25
- - b470c46: Fix big commerce icon and naming convention
26
-
27
- ## 8.1.0
28
-
29
- ### Minor Changes
30
-
31
- - cda796b: adds bigcommerce icon
32
-
33
3
  ## 8.0.0
34
4
 
35
5
  ### Major Changes
@@ -11,6 +11,8 @@ type TypeCollapsibleContext = $Shape<{
11
11
  isOpen: boolean,
12
12
  id: string,
13
13
  offset: number,
14
+ openHeight: number,
15
+ collapsedHeight: number,
14
16
  }>;
15
17
 
16
18
  const CollapsibleContext = React.createContext<TypeCollapsibleContext>({});
@@ -20,18 +22,42 @@ type TypeProps = {
20
22
  children: React.Node,
21
23
  /** If the children of the collapsible panel have a top or bottom margin, it will throw off the calculations for the height of the content. The total amount of vertical margin (in pixels) can be supplied to this prop to correct this. */
22
24
  offset?: number,
25
+ collapsedHeight?: number,
26
+ openHeight?: number,
23
27
  };
24
28
 
25
- const Collapsible = ({ children, isOpen = false, offset = 0 }: TypeProps) => {
29
+ const Collapsible = ({
30
+ children,
31
+ isOpen = false,
32
+ offset = 0,
33
+ collapsedHeight = 0,
34
+ openHeight,
35
+ }: TypeProps) => {
26
36
  const [id] = useState(`Racine-collapsible-${idCounter++}`);
27
37
 
28
38
  return (
29
- <CollapsibleContext.Provider value={{ isOpen, id, offset }}>
39
+ <CollapsibleContext.Provider
40
+ value={{ isOpen, id, offset, collapsedHeight, openHeight }}
41
+ >
30
42
  {children}
31
43
  </CollapsibleContext.Provider>
32
44
  );
33
45
  };
34
46
 
47
+ const determineMaxHeight = (isHidden, openHeight, computedHeight) => {
48
+ // If isHidden is undefined this is the first render. Return undefined so the max-height prop is not added
49
+ // This is a hack to prevent css from animating if it begins in the open state
50
+ // css animates when attribute values change (IE from 0 to another number)
51
+ // css does not animate when simply adding an attribute to an HTML element
52
+ if (isHidden === undefined) return undefined;
53
+
54
+ // If the user has defined an explicit open height, return that as the max height
55
+ if (!!openHeight) return openHeight;
56
+
57
+ // Otherwise, fallback to the computed height
58
+ return computedHeight;
59
+ };
60
+
35
61
  const Trigger = ({ children, ...rest }) => {
36
62
  const { isOpen, id } = useContext(CollapsibleContext);
37
63
 
@@ -47,17 +73,18 @@ const Trigger = ({ children, ...rest }) => {
47
73
  };
48
74
 
49
75
  const Panel = ({ children, ...rest }) => {
50
- const { isOpen, id, offset } = useContext(CollapsibleContext);
76
+ const { isOpen, id, offset, collapsedHeight, openHeight } = useContext(
77
+ CollapsibleContext
78
+ );
51
79
  const ref = useRef();
52
80
  const measurement = useMeasure(ref);
53
81
  const [isHidden, setIsHidden] = useState(undefined);
54
82
 
55
- // If this is the initial render isHidden will be undefined
56
- // When that is the case, set maxHeight to undefined rather than the comptued 0
57
- // This prevents an initial expansion animation if a component starts out open
58
- // There is no animation because css is not changing the maxHeight property after mount
59
- const maxHeight =
60
- isHidden === undefined ? undefined : measurement.height + offset;
83
+ const maxHeight = determineMaxHeight(
84
+ isHidden,
85
+ openHeight,
86
+ measurement.height + offset
87
+ );
61
88
 
62
89
  /* We use the "hidden" attribute to remove the contents of the panel from the tab order of the page, but it fucks with the animation. This logic sets a slight timeout on setting the prop so that the animation has time to complete before the attribute is set. */
63
90
  useEffect(() => {
@@ -76,14 +103,16 @@ const Panel = ({ children, ...rest }) => {
76
103
 
77
104
  return (
78
105
  <CollapsingBox
79
- maxHeight={isOpen ? maxHeight : "0"}
106
+ scrollable={isOpen}
107
+ maxHeight={isOpen ? maxHeight : collapsedHeight}
108
+ minHeight={collapsedHeight}
80
109
  data-qa-collapsible={""}
81
110
  data-qa-collapsible-isopen={isOpen === true}
82
111
  {...rest}
83
112
  >
84
113
  <Box
85
114
  width="100%"
86
- hidden={isHidden}
115
+ hidden={isHidden && collapsedHeight === 0}
87
116
  aria-hidden={!isOpen}
88
117
  id={id}
89
118
  ref={ref}
@@ -89,3 +89,80 @@ export const withTallContent = () => (
89
89
  withTallContent.story = {
90
90
  name: "With tall content",
91
91
  };
92
+
93
+ const StatefulCollapseWithMinHeight = ({
94
+ children,
95
+ offset = 0,
96
+ collapsedHeight = 0,
97
+ openHeight,
98
+ }) => {
99
+ const [open, setOpen] = useState(false);
100
+ const toggle = () => setOpen(!open);
101
+
102
+ return (
103
+ <Collapsible
104
+ id="test-id-1"
105
+ isOpen={open}
106
+ offset={offset}
107
+ openHeight={openHeight}
108
+ collapsedHeight={collapsedHeight}
109
+ >
110
+ <Collapsible.Panel>{children}</Collapsible.Panel>
111
+ <Collapsible.Trigger>
112
+ <Button onClick={toggle}>{open ? "Show Less" : "Show More"}</Button>
113
+ </Collapsible.Trigger>
114
+ </Collapsible>
115
+ );
116
+ };
117
+
118
+ export const withCollapsedHeight = () => {
119
+ return (
120
+ <StatefulCollapseWithMinHeight collapsedHeight={100} openHeight={300}>
121
+ <Box width="500px" p={400}>
122
+ Threepio! Come in, Threepio! Threepio! Get to the top! I can’t Where
123
+ could he be? Threepio! Threepio, will you come in? They aren’t here!
124
+ Something must have happened to them. See if they’ve been captured.
125
+ Hurry! One thing’s for sure. We’re all going to be a lot thinner! Get on
126
+ top of it! I’m trying! Thank goodness, they haven’t found them! Where
127
+ could they be? Use the comlink? Oh, my! I forgot I turned it off! Are
128
+ you there, sir? Threepio! We’ve had some problems… Will you shut up and
129
+ listen to me? Shut down all garbage mashers on the detention level, will
130
+ you? Do you copy? Shut down all the garbage mashers on the detention
131
+ level. Shut down all the garbage mashers on the detention level. No.
132
+ Shut them all down! Hurry! Listen to them! They’re dying, Artoo! Curse
133
+ my metal body! I wasn’t fast enough. It’s all my fault! My poor master!
134
+ Threepio, we’re all right! We’re all right. You did great. Threepio!
135
+ Come in, Threepio! Threepio! Get to the top! I can’t Where could he be?
136
+ Threepio! Threepio, will you come in? They aren’t here! Something must
137
+ have happened to them. See if they’ve been captured. Hurry! One thing’s
138
+ for sure. We’re all going to be a lot thinner! Get on top of it! I’m
139
+ trying! Thank goodness, they haven’t found them! Where could they be?
140
+ Use the comlink? Oh, my! I forgot I turned it off! Are you there, sir?
141
+ Threepio! We’ve had some problems… Will you shut up and listen to me?
142
+ Shut down all garbage mashers on the detention level, will you? Do you
143
+ copy? Shut down all the garbage mashers on the detention level. Shut
144
+ down all the garbage mashers on the detention level. No. Shut them all
145
+ down! Hurry! Listen to them! They’re dying, Artoo! Curse my metal body!
146
+ I wasn’t fast enough. It’s all my fault! My poor master! Threepio, we’re
147
+ all right! We’re all right. You did great. Threepio! Come in, Threepio!
148
+ Threepio! Get to the top! I can’t Where could he be? Threepio! Threepio,
149
+ will you come in? They aren’t here! Something must have happened to
150
+ them. See if they’ve been captured. Hurry! One thing’s for sure. We’re
151
+ all going to be a lot thinner! Get on top of it! I’m trying! Thank
152
+ goodness, they haven’t found them! Where could they be? Use the comlink?
153
+ Oh, my! I forgot I turned it off! Are you there, sir? Threepio! We’ve
154
+ had some problems… Will you shut up and listen to me? Shut down all
155
+ garbage mashers on the detention level, will you? Do you copy? Shut down
156
+ all the garbage mashers on the detention level. Shut down all the
157
+ garbage mashers on the detention level. No. Shut them all down! Hurry!
158
+ Listen to them! They’re dying, Artoo! Curse my metal body! I wasn’t fast
159
+ enough. It’s all my fault! My poor master! Threepio, we’re all right!
160
+ We’re all right. You did great.
161
+ </Box>
162
+ </StatefulCollapseWithMinHeight>
163
+ );
164
+ };
165
+
166
+ withCollapsedHeight.story = {
167
+ name: "With collapsedHeight",
168
+ };
@@ -4,9 +4,35 @@ import Box from "../Box";
4
4
 
5
5
  import type { TypeTheme } from "../types/theme.flow";
6
6
 
7
- export const CollapsingBox = styled<typeof Box, TypeTheme>(Box)`
7
+ export const CollapsingBox = styled<typeof Box, TypeTheme, *>(Box)`
8
8
  transition: max-height ${(p) => p.theme.duration.medium}
9
9
  ${(p) => p.theme.easing.ease_inout};
10
10
  will-change: max-height;
11
- overflow: hidden;
11
+ position: relative;
12
+ overflow: auto;
13
+ background: /* Shadow covers */ linear-gradient(
14
+ ${(p) => p.theme.colors.neutral[100]} 30%,
15
+ rgba(255, 255, 255, 0)
16
+ ),
17
+ linear-gradient(
18
+ rgba(255, 255, 255, 0),
19
+ ${(p) => p.theme.colors.neutral[100]} 70%
20
+ )
21
+ 0 100%,
22
+ /* Shadows */
23
+ radial-gradient(
24
+ farthest-side at 50% 0,
25
+ rgb(39 51 51 / 5%),
26
+ rgba(0, 0, 0, 0)
27
+ ),
28
+ radial-gradient(
29
+ farthest-side at 50% 100%,
30
+ rgb(39 51 51 / 5%),
31
+ rgba(0, 0, 0, 0)
32
+ )
33
+ 0 100%;
34
+ background-repeat: no-repeat;
35
+ background-size: 100% 40px, 100% 40px, 100% 14px, 100% 14px;
36
+ background-attachment: local, local, scroll, scroll;
37
+ ${({ scrollable }) => (scrollable ? `overflow: auto` : `overflow: hidden`)};
12
38
  `;
@@ -1,2 +1,2 @@
1
1
  // @flow
2
- export type EnumIconNames = "active-listener" | "add-item" | "add-keyword" | "add-team-member" | "add-variable" | "address-card-solid" | "adobe-experience-manager" | "ads" | "android" | "apple" | "approval-indicator-outline" | "approval-indicator" | "archive" | "arrow-down-line" | "arrow-down" | "arrow-left-line" | "arrow-left" | "arrow-right-line" | "arrow-right" | "arrow-up-line" | "arrow-up" | "arrows" | "asset-library-outline" | "asset-library" | "assign" | "atom" | "audio" | "back-to-top" | "bambu-icon-outline" | "bambu-icon" | "barcode" | "basketball" | "bell-outline" | "big-commerce" | "bigcommerce" | "bitly" | "bold" | "book" | "bot" | "browser" | "business" | "calendar-outline" | "calendar" | "camera-outline" | "camera-story" | "camera" | "campaign" | "canva" | "carousel" | "cart-plus-outline" | "cart-plus" | "check" | "chevron-down-filled" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up-down-filled" | "chevron-up-filled" | "chevron-up" | "circle-check-outline" | "circle-check" | "circle" | "circle+" | "circles" | "circlex" | "click-to-view" | "clicks" | "clipboard-outline" | "clipboard" | "clock" | "closed-captioning" | "cloud" | "code" | "columns" | "comment-alt-outline" | "comment-alt" | "comment-lines-alt-outline" | "comment" | "compact-density" | "compact-indicator" | "comparison" | "competitor" | "compose" | "content-suggestions" | "credit-card" | "crop" | "crown" | "dashboard" | "discovery" | "dislike-outline" | "dislike" | "dm-link-outline" | "dm-link" | "dotdotdot" | "download" | "drafts-outline" | "drafts" | "dropbox" | "duplicate-outline" | "duplicate" | "emoji-outline" | "emoji" | "empty-image" | "engagement-per-post" | "engagements" | "error" | "exchange-alt" | "expanded-indicator" | "export" | "extended-circles" | "external-link-alt" | "external-link" | "extreme-negative-sentiment" | "eye-outline" | "eye-slash-outline" | "eye-slash" | "eye" | "facebook-audience-network" | "facebook-branded-content-outline" | "facebook-branded-content" | "facebook-groups" | "facebook" | "fb-reactions-angry" | "fb-reactions-haha" | "fb-reactions-like" | "fb-reactions-love" | "fb-reactions-sad" | "fb-reactions-wow" | "feedly" | "feeds" | "female" | "file-chart-line" | "file-edit" | "file-times-solid" | "filter" | "flag-outline" | "flag" | "folder-open" | "folder" | "follow-outline" | "follow" | "follower-increase" | "following" | "font" | "full-access" | "gear" | "gears" | "glassdoor" | "glasses" | "globe" | "google-analytics-color" | "google-business-messages" | "google-drive" | "google-my-business" | "grip" | "h1" | "h2" | "hamburger" | "hashtag" | "headset" | "heart-outline" | "heart" | "heartbeat" | "help" | "hiking" | "history" | "home" | "hourglass" | "hubspot" | "image-caption" | "image" | "images" | "impressions-per-post" | "impressions" | "inactive-listener" | "inbox-action" | "inbox-views" | "inbox" | "indicator" | "industry" | "info" | "instagram" | "internal-activity-outline" | "internal-activity" | "italic" | "key" | "keyboard" | "laptop-phone" | "large-density" | "lift" | "like-outline" | "like" | "link" | "linkedin-audience-network" | "linkedin" | "list-ol" | "listening" | "lists" | "location-outline" | "location" | "lock" | "male" | "marketo" | "mention" | "message-preview-outline" | "message-preview" | "message" | "messages-outline" | "messages" | "messenger" | "metric-table" | "microsoft-dynamics" | "minus" | "mobile" | "monitor" | "moon" | "negative-sentiment" | "neutral-positive-sentiment" | "neutral-sentiment" | "new-trend" | "newspaper" | "no-access" | "notepad" | "notifications-publishing-outline" | "notifications-publishing" | "notifications" | "offline" | "online" | "paid-promotion-outline" | "paid-promotion" | "paid" | "paint" | "palette" | "paperclip" | "pause" | "pencil-outline" | "pencil" | "person" | "phone" | "pinterest-boards-outline" | "pinterest-boards" | "pinterest" | "play-circle" | "play" | "plus" | "positive-sentiment" | "power-up" | "profile-connect" | "profile-disconnect" | "publishing-outline" | "publishing" | "puzzle-piece" | "qr-code" | "queue" | "recommendation" | "reddit-alien" | "reddit" | "referrals" | "refresh" | "rejected" | "reply-outline" | "reply" | "reporting-period" | "reporting" | "reports-home" | "reports" | "retweet" | "rss" | "sales" | "salesforce" | "save-assets" | "saved-messages" | "saved-reply-outline" | "saved-reply" | "search" | "sent-message-outline" | "sent-message" | "share" | "shopify" | "show-navigation" | "slack" | "small-density" | "smiley" | "some-access" | "sparkles" | "spike-alert" | "star-half-alt-solid" | "star-of-life" | "star-outline" | "star" | "sticky-note-outline" | "sticky-note" | "stories" | "story" | "suggestions" | "sun" | "tag-outline" | "tag" | "targeting-outline" | "targeting" | "tasks-outline" | "tasks" | "team-conversation-outline" | "team-conversation" | "team" | "text-asset" | "text" | "times" | "trash-can-outline" | "trash-can" | "trend-down" | "trend-neutral" | "trend-up" | "trends" | "triangle-black" | "triangle" | "tripadvisor-circle-outline" | "tripadvisor-circle" | "tripadvisor" | "trophy-outline" | "tumblr" | "twitter-audience-network" | "twitter" | "unfollow-outline" | "unfollow" | "unlink" | "unlock" | "upload" | "user-circle" | "users" | "verified" | "video-camera-story" | "video-camera" | "vip" | "weight" | "whatsapp" | "window-maximize" | "window-minimize" | "window-regular" | "window-restore" | "woocommerce" | "x" | "yelp-full-star" | "yelp-half-star" | "yelp" | "youtube" | "zendesk";
2
+ export type EnumIconNames = "active-listener" | "add-item" | "add-keyword" | "add-team-member" | "add-variable" | "address-card-solid" | "adobe-experience-manager" | "ads" | "android" | "apple" | "approval-indicator-outline" | "approval-indicator" | "archive" | "arrow-down-line" | "arrow-down" | "arrow-left-line" | "arrow-left" | "arrow-right-line" | "arrow-right" | "arrow-up-line" | "arrow-up" | "arrows" | "asset-library-outline" | "asset-library" | "assign" | "atom" | "audio" | "back-to-top" | "bambu-icon-outline" | "bambu-icon" | "barcode" | "basketball" | "bell-outline" | "bitly" | "bold" | "book" | "bot" | "browser" | "business" | "calendar-outline" | "calendar" | "camera-outline" | "camera-story" | "camera" | "campaign" | "canva" | "carousel" | "cart-plus-outline" | "cart-plus" | "check" | "chevron-down-filled" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up-down-filled" | "chevron-up-filled" | "chevron-up" | "circle-check-outline" | "circle-check" | "circle" | "circle+" | "circles" | "circlex" | "click-to-view" | "clicks" | "clipboard-outline" | "clipboard" | "clock" | "closed-captioning" | "cloud" | "code" | "columns" | "comment-alt-outline" | "comment-alt" | "comment-lines-alt-outline" | "comment" | "compact-density" | "compact-indicator" | "comparison" | "competitor" | "compose" | "content-suggestions" | "credit-card" | "crop" | "crown" | "dashboard" | "discovery" | "dislike-outline" | "dislike" | "dm-link-outline" | "dm-link" | "dotdotdot" | "download" | "drafts-outline" | "drafts" | "dropbox" | "duplicate-outline" | "duplicate" | "emoji-outline" | "emoji" | "empty-image" | "engagement-per-post" | "engagements" | "error" | "exchange-alt" | "expanded-indicator" | "export" | "extended-circles" | "external-link-alt" | "external-link" | "extreme-negative-sentiment" | "eye-outline" | "eye-slash-outline" | "eye-slash" | "eye" | "facebook-audience-network" | "facebook-branded-content-outline" | "facebook-branded-content" | "facebook-groups" | "facebook" | "fb-reactions-angry" | "fb-reactions-haha" | "fb-reactions-like" | "fb-reactions-love" | "fb-reactions-sad" | "fb-reactions-wow" | "feedly" | "feeds" | "female" | "file-chart-line" | "file-edit" | "file-times-solid" | "filter" | "flag-outline" | "flag" | "folder-open" | "folder" | "follow-outline" | "follow" | "follower-increase" | "following" | "font" | "full-access" | "gear" | "gears" | "glassdoor" | "glasses" | "globe" | "google-analytics-color" | "google-business-messages" | "google-drive" | "google-my-business" | "grip" | "h1" | "h2" | "hamburger" | "hashtag" | "headset" | "heart-outline" | "heart" | "heartbeat" | "help" | "hiking" | "history" | "home" | "hourglass" | "hubspot" | "image-caption" | "image" | "images" | "impressions-per-post" | "impressions" | "inactive-listener" | "inbox-action" | "inbox-views" | "inbox" | "indicator" | "industry" | "info" | "instagram" | "internal-activity-outline" | "internal-activity" | "italic" | "key" | "keyboard" | "laptop-phone" | "large-density" | "lift" | "like-outline" | "like" | "link" | "linkedin-audience-network" | "linkedin" | "list-ol" | "listening" | "lists" | "location-outline" | "location" | "lock" | "male" | "marketo" | "mention" | "message-preview-outline" | "message-preview" | "message" | "messages-outline" | "messages" | "messenger" | "metric-table" | "microsoft-dynamics" | "minus" | "mobile" | "monitor" | "moon" | "negative-sentiment" | "neutral-positive-sentiment" | "neutral-sentiment" | "new-trend" | "newspaper" | "no-access" | "notepad" | "notifications-publishing-outline" | "notifications-publishing" | "notifications" | "offline" | "online" | "paid-promotion-outline" | "paid-promotion" | "paid" | "paint" | "palette" | "paperclip" | "pause" | "pencil-outline" | "pencil" | "person" | "phone" | "pinterest-boards-outline" | "pinterest-boards" | "pinterest" | "play-circle" | "play" | "plus" | "positive-sentiment" | "power-up" | "profile-connect" | "profile-disconnect" | "publishing-outline" | "publishing" | "puzzle-piece" | "qr-code" | "queue" | "recommendation" | "reddit-alien" | "reddit" | "referrals" | "refresh" | "rejected" | "reply-outline" | "reply" | "reporting-period" | "reporting" | "reports-home" | "reports" | "retweet" | "rss" | "sales" | "salesforce" | "save-assets" | "saved-messages" | "saved-reply-outline" | "saved-reply" | "search" | "sent-message-outline" | "sent-message" | "share" | "shopify" | "show-navigation" | "slack" | "small-density" | "smiley" | "some-access" | "sparkles" | "spike-alert" | "star-half-alt-solid" | "star-of-life" | "star-outline" | "star" | "sticky-note-outline" | "sticky-note" | "stories" | "story" | "suggestions" | "sun" | "tag-outline" | "tag" | "targeting-outline" | "targeting" | "tasks-outline" | "tasks" | "team-conversation-outline" | "team-conversation" | "team" | "text-asset" | "text" | "times" | "trash-can-outline" | "trash-can" | "trend-down" | "trend-neutral" | "trend-up" | "trends" | "triangle-black" | "triangle" | "tripadvisor-circle-outline" | "tripadvisor-circle" | "tripadvisor" | "trophy-outline" | "tumblr" | "twitter-audience-network" | "twitter" | "unfollow-outline" | "unfollow" | "unlink" | "unlock" | "upload" | "user-circle" | "users" | "verified" | "video-camera-story" | "video-camera" | "vip" | "weight" | "whatsapp" | "window-maximize" | "window-minimize" | "window-regular" | "window-restore" | "x" | "yelp-full-star" | "yelp-half-star" | "yelp" | "youtube" | "zendesk";
@@ -1 +1 @@
1
- module.exports = {"active-listener":"0 0 16 16","add-item":"0 0 16 16","add-keyword":"0 0 16 16","add-team-member":"0 0 18 13","add-variable":"0 0 18 14","address-card-solid":"0 0 18 16","adobe-experience-manager":"0 0 16 18","ads":"0 0 9 16","android":"0 0 14 16","apple":"0 0 14 16","approval-indicator-outline":"0 0 14 16","approval-indicator":"0 0 14 16","archive":"0 0 16 16","arrow-down-line":"0 0 14 16","arrow-down":"0 0 16 16","arrow-left-line":"0 0 16 18","arrow-left":"0 0 16 16","arrow-right-line":"0 0 16 18","arrow-right":"0 0 16 16","arrow-up-line":"0 0 14 16","arrow-up":"0 0 16 16","arrows":"0 0 16 16","asset-library-outline":"0 0 16 16","asset-library":"0 0 16 16","assign":"0 0 18 15","atom":"0 0 14 16","audio":"0 0 16 14","back-to-top":"0 0 15 16","bambu-icon-outline":"0 0 16 16","bambu-icon":"0 0 16 16","barcode":"0 0 18 16","basketball":"0 0 16 16","bell-outline":"0 0 14 16","big-commerce":"0 0 16 16","bigcommerce":"0 0 16 16","bitly":"0 0 16 16","bold":"0 0 16 16","book":"0 0 14 16","bot":"0 0 16 16","browser":"0 0 16 16","business":"0 0 16 16","calendar-outline":"0 0 14 16","calendar":"0 0 14 16","camera-outline":"0 0 18 16","camera-story":"0 0 18 16","camera":"0 0 18 16","campaign":"0 0 16 14","canva":"0 0 16 18","carousel":"0 0 16 18","cart-plus-outline":"0 0 17 15","cart-plus":"0 0 17 15","check":"0 0 16 16","chevron-down-filled":"0 0 16 21","chevron-down":"0 0 16 18","chevron-left":"0 0 10 16","chevron-right":"0 0 10 17","chevron-up-down-filled":"0 0 12 20","chevron-up-filled":"0 0 16 21","chevron-up":"0 0 16 18","circle-check-outline":"0 0 16 16","circle-check":"0 0 16 16","circle":"0 0 16 16","circle+":"0 0 16 16","circles":"0 0 16 16","circlex":"0 0 16 16","click-to-view":"0 0 12 16","clicks":"0 0 10 16","clipboard-outline":"0 0 12 16","clipboard":"0 0 12 16","clock":"0 0 16 16","closed-captioning":"0 0 16 16","cloud":"0 0 16 13","code":"0 0 18 16","columns":"0 0 16 16","comment-alt-outline":"0 0 16 15","comment-alt":"0 0 16 15","comment-lines-alt-outline":"0 0 16 16","comment":"0 0 16 13","compact-density":"0 0 16 16","compact-indicator":"0 0 16 16","comparison":"0 0 16 14","competitor":"0 0 14 16","compose":"0 0 16 16","content-suggestions":"0 0 16 16","credit-card":"0 0 16 14","crop":"0 0 16 16","crown":"0 0 16 16","dashboard":"0 0 16 14","discovery":"0 0 16 16","dislike-outline":"0 0 15 16","dislike":"0 0 16 16","dm-link-outline":"0 0 16 16","dm-link":"0 0 16 16","dotdotdot":"0 0 16 16","download":"0 0 16 16","drafts-outline":"0 0 12 16","drafts":"0 0 12 16","dropbox":"0 0 18 16","duplicate-outline":"0 0 14 16","duplicate":"0 0 14 16","emoji-outline":"0 0 16 16","emoji":"0 0 16 16","empty-image":"0 0 16 18","engagement-per-post":"0 0 16 16","engagements":"0 0 16 15","error":"0 0 16 16","exchange-alt":"0 0 16 16","expanded-indicator":"0 0 16 16","export":"0 0 14 17","extended-circles":"0 0 16 16","external-link-alt":"0 0 16 16","external-link":"0 0 16 16","extreme-negative-sentiment":"0 0 16 16","eye-outline":"0 0 18 16","eye-slash-outline":"0 0 20 16","eye-slash":"0 0 20 16","eye":"0 0 18 16","facebook-audience-network":"0 0 16 16","facebook-branded-content-outline":"0 0 18 15","facebook-branded-content":"0 0 18 15","facebook-groups":"0 0 16 16","facebook":"0 0 16 16","fb-reactions-angry":"0 0 16 16","fb-reactions-haha":"0 0 16 16","fb-reactions-like":"0 0 16 16","fb-reactions-love":"0 0 16 16","fb-reactions-sad":"0 0 16 16","fb-reactions-wow":"0 0 16 16","feedly":"0 0 16 15","feeds":"0 0 16 15","female":"0 0 11 18","file-chart-line":"0 0 12 16","file-edit":"0 0 12 16","file-times-solid":"0 0 12 16","filter":"0 0 16 16","flag-outline":"0 0 16 16","flag":"0 0 16 16","folder-open":"0 0 16 15","folder":"0 0 16 16","follow-outline":"0 0 20 16","follow":"0 0 20 16","follower-increase":"0 0 19 16","following":"0 0 20 16","font":"0 0 18 16","full-access":"0 0 16 16","gear":"0 0 16 16","gears":"0 0 16 16","glassdoor":"0 0 16 16","glasses":"0 0 18 14","globe":"0 0 16 16","google-analytics-color":"0 0 14 18","google-business-messages":"0 0 16 16","google-drive":"0 0 16 14","google-my-business":"0 0 16 14","grip":"0 0 8 18","h1":"0 0 16 16","h2":"0 0 16 16","hamburger":"0 0 16 18","hashtag":"0 0 16 16","headset":"0 0 16 16","heart-outline":"0 0 16 16","heart":"0 0 16 16","heartbeat":"0 0 18 16","help":"0 0 16 16","hiking":"0 0 16 16","history":"0 0 16 16","home":"0 0 16 15","hourglass":"0 0 12 16","hubspot":"0 0 16 16","image-caption":"0 0 16 14","image":"0 0 16 16","images":"0 0 16 15","impressions-per-post":"0 0 16 16","impressions":"0 0 18 16","inactive-listener":"0 0 16 12","inbox-action":"0 0 16 16","inbox-views":"0 0 16 13","inbox":"0 0 16 14","indicator":"0 0 16 16","industry":"0 0 14 16","info":"0 0 16 16","instagram":"0 0 16 16","internal-activity-outline":"0 0 16 16","internal-activity":"0 0 16 16","italic":"0 0 16 16","key":"0 0 16 16","keyboard":"0 0 18 16","laptop-phone":"0 0 16 16","large-density":"0 0 16 16","lift":"0 0 23 16","like-outline":"0 0 15 16","like":"0 0 16 16","link":"0 0 16 16","linkedin-audience-network":"0 0 16 16","linkedin":"0 0 16 16","list-ol":"0 0 16 16","listening":"0 0 14 16","lists":"0 0 16 16","location-outline":"0 0 12 16","location":"0 0 12 16","lock":"0 0 14 16","male":"0 0 16 20","marketo":"0 0 16 18","mention":"0 0 16 16","message-preview-outline":"0 0 18 16","message-preview":"0 0 18 16","message":"0 0 16 16","messages-outline":"0 0 16 16","messages":"0 0 16 16","messenger":"0 0 16 16","metric-table":"0 0 16 16","microsoft-dynamics":"0 0 16 16","minus":"0 0 16 16","mobile":"0 0 10 16","monitor":"0 0 12 16","moon":"0 0 15 16","negative-sentiment":"0 0 16 16","neutral-positive-sentiment":"0 0 16 16","neutral-sentiment":"0 0 16 16","new-trend":"0 0 12 16","newspaper":"0 0 16 16","no-access":"0 0 16 16","notepad":"0 0 12 16","notifications-publishing-outline":"0 0 16 16","notifications-publishing":"0 0 16 16","notifications":"0 0 14 16","offline":"0 0 18 15","online":"0 0 18 15","paid-promotion-outline":"0 0 16 16","paid-promotion":"0 0 16 16","paid":"0 0 14 16","paint":"0 0 18 16","palette":"0 0 16 16","paperclip":"0 0 14 16","pause":"0 0 16 18","pencil-outline":"0 0 16 16","pencil":"0 0 16 16","person":"0 0 14 16","phone":"0 0 16 16","pinterest-boards-outline":"0 0 14 16","pinterest-boards":"0 0 14 16","pinterest":"0 0 16 16","play-circle":"0 0 16 16","play":"0 0 14 16","plus":"0 0 16 18","positive-sentiment":"0 0 16 16","power-up":"0 0 10 16","profile-connect":"0 0 16 16","profile-disconnect":"0 0 16 16","publishing-outline":"0 0 16 16","publishing":"0 0 16 16","puzzle-piece":"0 0 18 16","qr-code":"0 0 16 16","queue":"0 0 16 16","recommendation":"0 0 16 16","reddit-alien":"0 0 16 16","reddit":"0 0 16 16","referrals":"0 0 16 16","refresh":"0 0 16 16","rejected":"0 0 16 16","reply-outline":"0 0 16 16","reply":"0 0 16 16","reporting-period":"0 0 14 16","reporting":"0 0 16 16","reports-home":"0 0 16 16","reports":"0 0 16 15","retweet":"0 0 18 16","rss":"0 0 16 16","sales":"0 0 9 16","salesforce":"0 0 20 16","save-assets":"0 0 16 16","saved-messages":"0 0 16 16","saved-reply-outline":"0 0 16 12","saved-reply":"0 0 16 12","search":"0 0 16 16","sent-message-outline":"0 0 16 14","sent-message":"0 0 16 14","share":"0 0 16 14","shopify":"0 0 16 18","show-navigation":"0 0 18 14","slack":"0 0 16 16","small-density":"0 0 16 16","smiley":"0 0 16 16","some-access":"0 0 16 16","sparkles":"0 0 16 16","spike-alert":"0 0 16 16","star-half-alt-solid":"0 0 18 16","star-of-life":"0 0 16 16","star-outline":"0 0 18 16","star":"0 0 18 16","sticky-note-outline":"0 0 16 16","sticky-note":"0 0 16 16","stories":"0 0 16 17","story":"0 0 16 16","suggestions":"0 0 11 16","sun":"0 0 16 16","tag-outline":"0 0 16 16","tag":"0 0 16 16","targeting-outline":"0 0 16 16","targeting":"0 0 16 16","tasks-outline":"0 0 12 16","tasks":"0 0 12 16","team-conversation-outline":"0 0 16 18","team-conversation":"0 0 16 18","team":"0 0 18 16","text-asset":"0 0 16 16","text":"0 0 8 16","times":"0 0 16 22","trash-can-outline":"0 0 14 16","trash-can":"0 0 14 16","trend-down":"0 0 18 18","trend-neutral":"0 0 20 18","trend-up":"0 0 18 18","trends":"0 0 16 17","triangle-black":"0 0 16 16","triangle":"0 0 16 16","tripadvisor-circle-outline":"0 0 16 16","tripadvisor-circle":"0 0 16 16","tripadvisor":"0 0 16 16","trophy-outline":"0 0 18 16","tumblr":"0 0 16 16","twitter-audience-network":"0 0 17 16","twitter":"0 0 17 16","unfollow-outline":"0 0 20 16","unfollow":"0 0 20 16","unlink":"0 0 16 16","unlock":"0 0 14 16","upload":"0 0 16 17","user-circle":"0 0 16 16","users":"0 0 18 16","verified":"0 0 16 16","video-camera-story":"0 0 18 15","video-camera":"0 0 18 16","vip":"0 0 16 16","weight":"0 0 16 16","whatsapp":"0 0 16 16","window-maximize":"0 0 16 16","window-minimize":"0 0 16 16","window-regular":"0 0 16 16","window-restore":"0 0 16 16","woocommerce":"0 0 16 16","x":"0 0 16 18","yelp-full-star":"0 0 16 16","yelp-half-star":"0 0 16 16","yelp":"0 0 14 16","youtube":"0 0 16 15","zendesk":"0 0 16 16"};
1
+ module.exports = {"active-listener":"0 0 16 16","add-item":"0 0 16 16","add-keyword":"0 0 16 16","add-team-member":"0 0 18 13","add-variable":"0 0 18 14","address-card-solid":"0 0 18 16","adobe-experience-manager":"0 0 16 18","ads":"0 0 9 16","android":"0 0 14 16","apple":"0 0 14 16","approval-indicator-outline":"0 0 14 16","approval-indicator":"0 0 14 16","archive":"0 0 16 16","arrow-down-line":"0 0 14 16","arrow-down":"0 0 16 16","arrow-left-line":"0 0 16 18","arrow-left":"0 0 16 16","arrow-right-line":"0 0 16 18","arrow-right":"0 0 16 16","arrow-up-line":"0 0 14 16","arrow-up":"0 0 16 16","arrows":"0 0 16 16","asset-library-outline":"0 0 16 16","asset-library":"0 0 16 16","assign":"0 0 18 15","atom":"0 0 14 16","audio":"0 0 16 14","back-to-top":"0 0 15 16","bambu-icon-outline":"0 0 16 16","bambu-icon":"0 0 16 16","barcode":"0 0 18 16","basketball":"0 0 16 16","bell-outline":"0 0 14 16","bitly":"0 0 16 16","bold":"0 0 16 16","book":"0 0 14 16","bot":"0 0 16 16","browser":"0 0 16 16","business":"0 0 16 16","calendar-outline":"0 0 14 16","calendar":"0 0 14 16","camera-outline":"0 0 18 16","camera-story":"0 0 18 16","camera":"0 0 18 16","campaign":"0 0 16 14","canva":"0 0 16 18","carousel":"0 0 16 18","cart-plus-outline":"0 0 17 15","cart-plus":"0 0 17 15","check":"0 0 16 16","chevron-down-filled":"0 0 16 21","chevron-down":"0 0 16 18","chevron-left":"0 0 10 16","chevron-right":"0 0 10 17","chevron-up-down-filled":"0 0 12 20","chevron-up-filled":"0 0 16 21","chevron-up":"0 0 16 18","circle-check-outline":"0 0 16 16","circle-check":"0 0 16 16","circle":"0 0 16 16","circle+":"0 0 16 16","circles":"0 0 16 16","circlex":"0 0 16 16","click-to-view":"0 0 12 16","clicks":"0 0 10 16","clipboard-outline":"0 0 12 16","clipboard":"0 0 12 16","clock":"0 0 16 16","closed-captioning":"0 0 16 16","cloud":"0 0 16 13","code":"0 0 18 16","columns":"0 0 16 16","comment-alt-outline":"0 0 16 15","comment-alt":"0 0 16 15","comment-lines-alt-outline":"0 0 16 16","comment":"0 0 16 13","compact-density":"0 0 16 16","compact-indicator":"0 0 16 16","comparison":"0 0 16 14","competitor":"0 0 14 16","compose":"0 0 16 16","content-suggestions":"0 0 16 16","credit-card":"0 0 16 14","crop":"0 0 16 16","crown":"0 0 16 16","dashboard":"0 0 16 14","discovery":"0 0 16 16","dislike-outline":"0 0 15 16","dislike":"0 0 16 16","dm-link-outline":"0 0 16 16","dm-link":"0 0 16 16","dotdotdot":"0 0 16 16","download":"0 0 16 16","drafts-outline":"0 0 12 16","drafts":"0 0 12 16","dropbox":"0 0 18 16","duplicate-outline":"0 0 14 16","duplicate":"0 0 14 16","emoji-outline":"0 0 16 16","emoji":"0 0 16 16","empty-image":"0 0 16 18","engagement-per-post":"0 0 16 16","engagements":"0 0 16 15","error":"0 0 16 16","exchange-alt":"0 0 16 16","expanded-indicator":"0 0 16 16","export":"0 0 14 17","extended-circles":"0 0 16 16","external-link-alt":"0 0 16 16","external-link":"0 0 16 16","extreme-negative-sentiment":"0 0 16 16","eye-outline":"0 0 18 16","eye-slash-outline":"0 0 20 16","eye-slash":"0 0 20 16","eye":"0 0 18 16","facebook-audience-network":"0 0 16 16","facebook-branded-content-outline":"0 0 18 15","facebook-branded-content":"0 0 18 15","facebook-groups":"0 0 16 16","facebook":"0 0 16 16","fb-reactions-angry":"0 0 16 16","fb-reactions-haha":"0 0 16 16","fb-reactions-like":"0 0 16 16","fb-reactions-love":"0 0 16 16","fb-reactions-sad":"0 0 16 16","fb-reactions-wow":"0 0 16 16","feedly":"0 0 16 15","feeds":"0 0 16 15","female":"0 0 11 18","file-chart-line":"0 0 12 16","file-edit":"0 0 12 16","file-times-solid":"0 0 12 16","filter":"0 0 16 16","flag-outline":"0 0 16 16","flag":"0 0 16 16","folder-open":"0 0 16 15","folder":"0 0 16 16","follow-outline":"0 0 20 16","follow":"0 0 20 16","follower-increase":"0 0 19 16","following":"0 0 20 16","font":"0 0 18 16","full-access":"0 0 16 16","gear":"0 0 16 16","gears":"0 0 16 16","glassdoor":"0 0 16 16","glasses":"0 0 18 14","globe":"0 0 16 16","google-analytics-color":"0 0 14 18","google-business-messages":"0 0 16 16","google-drive":"0 0 16 14","google-my-business":"0 0 16 14","grip":"0 0 8 18","h1":"0 0 16 16","h2":"0 0 16 16","hamburger":"0 0 16 18","hashtag":"0 0 16 16","headset":"0 0 16 16","heart-outline":"0 0 16 16","heart":"0 0 16 16","heartbeat":"0 0 18 16","help":"0 0 16 16","hiking":"0 0 16 16","history":"0 0 16 16","home":"0 0 16 15","hourglass":"0 0 12 16","hubspot":"0 0 16 16","image-caption":"0 0 16 14","image":"0 0 16 16","images":"0 0 16 15","impressions-per-post":"0 0 16 16","impressions":"0 0 18 16","inactive-listener":"0 0 16 12","inbox-action":"0 0 16 16","inbox-views":"0 0 16 13","inbox":"0 0 16 14","indicator":"0 0 16 16","industry":"0 0 14 16","info":"0 0 16 16","instagram":"0 0 16 16","internal-activity-outline":"0 0 16 16","internal-activity":"0 0 16 16","italic":"0 0 16 16","key":"0 0 16 16","keyboard":"0 0 18 16","laptop-phone":"0 0 16 16","large-density":"0 0 16 16","lift":"0 0 23 16","like-outline":"0 0 15 16","like":"0 0 16 16","link":"0 0 16 16","linkedin-audience-network":"0 0 16 16","linkedin":"0 0 16 16","list-ol":"0 0 16 16","listening":"0 0 14 16","lists":"0 0 16 16","location-outline":"0 0 12 16","location":"0 0 12 16","lock":"0 0 14 16","male":"0 0 16 20","marketo":"0 0 16 18","mention":"0 0 16 16","message-preview-outline":"0 0 18 16","message-preview":"0 0 18 16","message":"0 0 16 16","messages-outline":"0 0 16 16","messages":"0 0 16 16","messenger":"0 0 16 16","metric-table":"0 0 16 16","microsoft-dynamics":"0 0 16 16","minus":"0 0 16 16","mobile":"0 0 10 16","monitor":"0 0 12 16","moon":"0 0 15 16","negative-sentiment":"0 0 16 16","neutral-positive-sentiment":"0 0 16 16","neutral-sentiment":"0 0 16 16","new-trend":"0 0 12 16","newspaper":"0 0 16 16","no-access":"0 0 16 16","notepad":"0 0 12 16","notifications-publishing-outline":"0 0 16 16","notifications-publishing":"0 0 16 16","notifications":"0 0 14 16","offline":"0 0 18 15","online":"0 0 18 15","paid-promotion-outline":"0 0 16 16","paid-promotion":"0 0 16 16","paid":"0 0 14 16","paint":"0 0 18 16","palette":"0 0 16 16","paperclip":"0 0 14 16","pause":"0 0 16 18","pencil-outline":"0 0 16 16","pencil":"0 0 16 16","person":"0 0 14 16","phone":"0 0 16 16","pinterest-boards-outline":"0 0 14 16","pinterest-boards":"0 0 14 16","pinterest":"0 0 16 16","play-circle":"0 0 16 16","play":"0 0 14 16","plus":"0 0 16 18","positive-sentiment":"0 0 16 16","power-up":"0 0 10 16","profile-connect":"0 0 16 16","profile-disconnect":"0 0 16 16","publishing-outline":"0 0 16 16","publishing":"0 0 16 16","puzzle-piece":"0 0 18 16","qr-code":"0 0 16 16","queue":"0 0 16 16","recommendation":"0 0 16 16","reddit-alien":"0 0 16 16","reddit":"0 0 16 16","referrals":"0 0 16 16","refresh":"0 0 16 16","rejected":"0 0 16 16","reply-outline":"0 0 16 16","reply":"0 0 16 16","reporting-period":"0 0 14 16","reporting":"0 0 16 16","reports-home":"0 0 16 16","reports":"0 0 16 15","retweet":"0 0 18 16","rss":"0 0 16 16","sales":"0 0 9 16","salesforce":"0 0 20 16","save-assets":"0 0 16 16","saved-messages":"0 0 16 16","saved-reply-outline":"0 0 16 12","saved-reply":"0 0 16 12","search":"0 0 16 16","sent-message-outline":"0 0 16 14","sent-message":"0 0 16 14","share":"0 0 16 14","shopify":"0 0 16 18","show-navigation":"0 0 18 14","slack":"0 0 16 16","small-density":"0 0 16 16","smiley":"0 0 16 16","some-access":"0 0 16 16","sparkles":"0 0 16 16","spike-alert":"0 0 16 16","star-half-alt-solid":"0 0 18 16","star-of-life":"0 0 16 16","star-outline":"0 0 18 16","star":"0 0 18 16","sticky-note-outline":"0 0 16 16","sticky-note":"0 0 16 16","stories":"0 0 16 17","story":"0 0 16 16","suggestions":"0 0 11 16","sun":"0 0 16 16","tag-outline":"0 0 16 16","tag":"0 0 16 16","targeting-outline":"0 0 16 16","targeting":"0 0 16 16","tasks-outline":"0 0 12 16","tasks":"0 0 12 16","team-conversation-outline":"0 0 16 18","team-conversation":"0 0 16 18","team":"0 0 18 16","text-asset":"0 0 16 16","text":"0 0 8 16","times":"0 0 16 22","trash-can-outline":"0 0 14 16","trash-can":"0 0 14 16","trend-down":"0 0 18 18","trend-neutral":"0 0 20 18","trend-up":"0 0 18 18","trends":"0 0 16 17","triangle-black":"0 0 16 16","triangle":"0 0 16 16","tripadvisor-circle-outline":"0 0 16 16","tripadvisor-circle":"0 0 16 16","tripadvisor":"0 0 16 16","trophy-outline":"0 0 18 16","tumblr":"0 0 16 16","twitter-audience-network":"0 0 17 16","twitter":"0 0 17 16","unfollow-outline":"0 0 20 16","unfollow":"0 0 20 16","unlink":"0 0 16 16","unlock":"0 0 14 16","upload":"0 0 16 17","user-circle":"0 0 16 16","users":"0 0 18 16","verified":"0 0 16 16","video-camera-story":"0 0 18 15","video-camera":"0 0 18 16","vip":"0 0 16 16","weight":"0 0 16 16","whatsapp":"0 0 16 16","window-maximize":"0 0 16 16","window-minimize":"0 0 16 16","window-regular":"0 0 16 16","window-restore":"0 0 16 16","x":"0 0 16 18","yelp-full-star":"0 0 16 16","yelp-half-star":"0 0 16 16","yelp":"0 0 14 16","youtube":"0 0 16 15","zendesk":"0 0 16 16"};
@@ -1,7 +1,10 @@
1
1
  // @flow
2
2
  import List from "./styles";
3
3
  import React, { useCallback, useMemo } from "react";
4
- import { AutoSizer, CellMeasurer, CellMeasurerCache } from "react-virtualized";
4
+ import { CellMeasurer, CellMeasurerCache } from "react-virtualized";
5
+
6
+ // imported separately so it can be mocked separately (otherwise height and width will always be 0 in jsdom)
7
+ import AutoSizer from "react-virtualized/dist/es/AutoSizer";
5
8
 
6
9
  import Box from "../Box";
7
10
 
@@ -3,43 +3,11 @@ import { render } from "../utils/react-testing-library";
3
3
  import "jest-styled-components";
4
4
  import List from "./";
5
5
 
6
- describe("List", () => {
7
- // Logic to make Autosizer work in RTL
8
- const originalOffsetHeight = Object.getOwnPropertyDescriptor(
9
- HTMLElement.prototype,
10
- "offsetHeight"
11
- );
12
- const originalOffsetWidth = Object.getOwnPropertyDescriptor(
13
- HTMLElement.prototype,
14
- "offsetWidth"
15
- );
16
-
17
- beforeAll(() => {
18
- Object.defineProperty(HTMLElement.prototype, "offsetHeight", {
19
- configurable: true,
20
- value: 200,
21
- });
22
- Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
23
- configurable: true,
24
- value: 200,
25
- });
26
- });
27
-
28
- afterAll(() => {
29
- // $FlowIssue
30
- Object.defineProperty(
31
- HTMLElement.prototype,
32
- "offsetHeight",
33
- originalOffsetHeight
34
- );
35
- // $FlowIssue
36
- Object.defineProperty(
37
- HTMLElement.prototype,
38
- "offsetWidth",
39
- originalOffsetWidth
40
- );
41
- });
6
+ jest.mock("react-virtualized/dist/es/AutoSizer", () => ({ children }) =>
7
+ children({ height: 600, width: 600 })
8
+ );
42
9
 
10
+ describe("List", () => {
43
11
  it("should render properly", async () => {
44
12
  const { container, runA11yCheck } = render(<List />);
45
13
  expect(container).toBeTruthy();
@@ -29,7 +29,10 @@ var Collapsible = function Collapsible(_ref) {
29
29
  _ref$isOpen = _ref.isOpen,
30
30
  isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
31
31
  _ref$offset = _ref.offset,
32
- offset = _ref$offset === void 0 ? 0 : _ref$offset;
32
+ offset = _ref$offset === void 0 ? 0 : _ref$offset,
33
+ _ref$collapsedHeight = _ref.collapsedHeight,
34
+ collapsedHeight = _ref$collapsedHeight === void 0 ? 0 : _ref$collapsedHeight,
35
+ openHeight = _ref.openHeight;
33
36
 
34
37
  var _useState = (0, React.useState)("Racine-collapsible-" + idCounter++),
35
38
  id = _useState[0];
@@ -38,11 +41,25 @@ var Collapsible = function Collapsible(_ref) {
38
41
  value: {
39
42
  isOpen: isOpen,
40
43
  id: id,
41
- offset: offset
44
+ offset: offset,
45
+ collapsedHeight: collapsedHeight,
46
+ openHeight: openHeight
42
47
  }
43
48
  }, children);
44
49
  };
45
50
 
51
+ var determineMaxHeight = function determineMaxHeight(isHidden, openHeight, computedHeight) {
52
+ // If isHidden is undefined this is the first render. Return undefined so the max-height prop is not added
53
+ // This is a hack to prevent css from animating if it begins in the open state
54
+ // css animates when attribute values change (IE from 0 to another number)
55
+ // css does not animate when simply adding an attribute to an HTML element
56
+ if (isHidden === undefined) return undefined; // If the user has defined an explicit open height, return that as the max height
57
+
58
+ if (!!openHeight) return openHeight; // Otherwise, fallback to the computed height
59
+
60
+ return computedHeight;
61
+ };
62
+
46
63
  var Trigger = function Trigger(_ref2) {
47
64
  var children = _ref2.children,
48
65
  rest = _objectWithoutPropertiesLoose(_ref2, ["children"]);
@@ -64,20 +81,18 @@ var Panel = function Panel(_ref3) {
64
81
  var _useContext2 = (0, React.useContext)(CollapsibleContext),
65
82
  isOpen = _useContext2.isOpen,
66
83
  id = _useContext2.id,
67
- offset = _useContext2.offset;
84
+ offset = _useContext2.offset,
85
+ collapsedHeight = _useContext2.collapsedHeight,
86
+ openHeight = _useContext2.openHeight;
68
87
 
69
88
  var ref = (0, React.useRef)();
70
89
  var measurement = (0, _useMeasure.default)(ref);
71
90
 
72
91
  var _useState2 = (0, React.useState)(undefined),
73
92
  isHidden = _useState2[0],
74
- setIsHidden = _useState2[1]; // If this is the initial render isHidden will be undefined
75
- // When that is the case, set maxHeight to undefined rather than the comptued 0
76
- // This prevents an initial expansion animation if a component starts out open
77
- // There is no animation because css is not changing the maxHeight property after mount
78
-
93
+ setIsHidden = _useState2[1];
79
94
 
80
- var maxHeight = isHidden === undefined ? undefined : measurement.height + offset;
95
+ var maxHeight = determineMaxHeight(isHidden, openHeight, measurement.height + offset);
81
96
  /* We use the "hidden" attribute to remove the contents of the panel from the tab order of the page, but it fucks with the animation. This logic sets a slight timeout on setting the prop so that the animation has time to complete before the attribute is set. */
82
97
 
83
98
  (0, React.useEffect)(function () {
@@ -103,12 +118,14 @@ var Panel = function Panel(_ref3) {
103
118
  }
104
119
  }, [isOpen]);
105
120
  return /*#__PURE__*/React.createElement(_styles.CollapsingBox, _extends({
106
- maxHeight: isOpen ? maxHeight : "0",
121
+ scrollable: isOpen,
122
+ maxHeight: isOpen ? maxHeight : collapsedHeight,
123
+ minHeight: collapsedHeight,
107
124
  "data-qa-collapsible": "",
108
125
  "data-qa-collapsible-isopen": isOpen === true
109
126
  }, rest), /*#__PURE__*/React.createElement(_Box.default, {
110
127
  width: "100%",
111
- hidden: isHidden,
128
+ hidden: isHidden && collapsedHeight === 0,
112
129
  "aria-hidden": !isOpen,
113
130
  id: id,
114
131
  ref: ref
@@ -12,9 +12,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
12
12
  var CollapsingBox = (0, _styledComponents.default)(_Box.default).withConfig({
13
13
  displayName: "styles__CollapsingBox",
14
14
  componentId: "sc-1xvfbl7-0"
15
- })(["transition:max-height ", " ", ";will-change:max-height;overflow:hidden;"], function (p) {
15
+ })(["transition:max-height ", " ", ";will-change:max-height;position:relative;overflow:auto;background:linear-gradient( ", " 30%,rgba(255,255,255,0) ),linear-gradient( rgba(255,255,255,0),", " 70% ) 0 100%,radial-gradient( farthest-side at 50% 0,rgb(39 51 51 / 5%),rgba(0,0,0,0) ),radial-gradient( farthest-side at 50% 100%,rgb(39 51 51 / 5%),rgba(0,0,0,0) ) 0 100%;background-repeat:no-repeat;background-size:100% 40px,100% 40px,100% 14px,100% 14px;background-attachment:local,local,scroll,scroll;", ";"], function (p) {
16
16
  return p.theme.duration.medium;
17
17
  }, function (p) {
18
18
  return p.theme.easing.ease_inout;
19
+ }, function (p) {
20
+ return p.theme.colors.neutral[100];
21
+ }, function (p) {
22
+ return p.theme.colors.neutral[100];
23
+ }, function (_ref) {
24
+ var scrollable = _ref.scrollable;
25
+ return scrollable ? "overflow: auto" : "overflow: hidden";
19
26
  });
20
27
  exports.CollapsingBox = CollapsingBox;
@@ -34,8 +34,6 @@ module.exports = {
34
34
  "barcode": "0 0 18 16",
35
35
  "basketball": "0 0 16 16",
36
36
  "bell-outline": "0 0 14 16",
37
- "big-commerce": "0 0 16 16",
38
- "bigcommerce": "0 0 16 16",
39
37
  "bitly": "0 0 16 16",
40
38
  "bold": "0 0 16 16",
41
39
  "book": "0 0 14 16",
@@ -341,7 +339,6 @@ module.exports = {
341
339
  "window-minimize": "0 0 16 16",
342
340
  "window-regular": "0 0 16 16",
343
341
  "window-restore": "0 0 16 16",
344
- "woocommerce": "0 0 16 16",
345
342
  "x": "0 0 16 18",
346
343
  "yelp-full-star": "0 0 16 16",
347
344
  "yelp-half-star": "0 0 16 16",
@@ -9,6 +9,8 @@ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _reactVirtualized = require("react-virtualized");
11
11
 
12
+ var _AutoSizer = _interopRequireDefault(require("react-virtualized/dist/es/AutoSizer"));
13
+
12
14
  var _Box = _interopRequireDefault(require("../Box"));
13
15
 
14
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); }
@@ -57,7 +59,7 @@ var VirtualizedList = function VirtualizedList(_ref) {
57
59
  })));
58
60
  });
59
61
  }, [items, getItemProps, cache, itemWrapperProps]);
60
- return /*#__PURE__*/_react.default.createElement(_reactVirtualized.AutoSizer, null, function (_ref4) {
62
+ return /*#__PURE__*/_react.default.createElement(_AutoSizer.default, null, function (_ref4) {
61
63
  var height = _ref4.height,
62
64
  width = _ref4.width;
63
65
  return /*#__PURE__*/_react.default.createElement(_styles.default, _extends({