playbook_ui 13.16.0.pre.alpha.powercentrainplaybookpt22125 → 13.17.0.pre.alpha.nodealphaupgrade2157

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_reset.scss +2 -2
  3. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +292 -3
  4. data/app/pb_kits/playbook/pb_button/_button.scss +3 -3
  5. data/app/pb_kits/playbook/pb_button/_button_mixins.scss +2 -3
  6. data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +1 -1
  7. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +2 -2
  8. data/app/pb_kits/playbook/pb_dashboard/commonSettings.js +1 -1
  9. data/app/pb_kits/playbook/pb_dashboard/pbChartsDarkTheme.ts +1 -1
  10. data/app/pb_kits/playbook/pb_dashboard/pbChartsLightTheme.ts +1 -1
  11. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_flatpickr_styles.scss +1 -1
  12. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +1 -1
  13. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.html.erb +5 -7
  14. data/app/pb_kits/playbook/pb_popover/_popover.tsx +12 -14
  15. data/app/pb_kits/playbook/pb_popover/docs/_popover_actionable_content.html.erb +30 -0
  16. data/app/pb_kits/playbook/pb_popover/docs/_popover_actionable_content.jsx +57 -0
  17. data/app/pb_kits/playbook/pb_popover/docs/example.yml +2 -1
  18. data/app/pb_kits/playbook/pb_popover/docs/index.js +1 -0
  19. data/app/pb_kits/playbook/pb_popover/popover.test.js +29 -31
  20. data/app/pb_kits/playbook/pb_table/_table.tsx +3 -0
  21. data/app/pb_kits/playbook/pb_table/docs/_table_striped.html.erb +48 -0
  22. data/app/pb_kits/playbook/pb_table/docs/_table_striped.jsx +58 -0
  23. data/app/pb_kits/playbook/pb_table/docs/_table_striped.md +1 -0
  24. data/app/pb_kits/playbook/pb_table/docs/example.yml +2 -0
  25. data/app/pb_kits/playbook/pb_table/docs/index.js +1 -0
  26. data/app/pb_kits/playbook/pb_table/styles/_all.scss +1 -0
  27. data/app/pb_kits/playbook/pb_table/styles/_striped.scss +19 -0
  28. data/app/pb_kits/playbook/pb_table/table.rb +7 -1
  29. data/app/pb_kits/playbook/pb_table/table.test.js +5 -0
  30. data/app/pb_kits/playbook/tokens/_typography.scss +10 -10
  31. data/dist/menu.yml +102 -3
  32. data/dist/playbook-rails.js +7 -7
  33. data/dist/reset.css +1 -2
  34. data/lib/playbook/version.rb +2 -2
  35. metadata +8 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23d0612e30988562c51f3645ab1b8e17457040f5429fd42349efdac4ba34721d
4
- data.tar.gz: a8b761742544cf542cf3982ed1ddd78df0121f2e9a630fcf3b0c1993b9b088c7
3
+ metadata.gz: d229baf16d600479c55f9fc35e8b93b5978cba2506b23e883860ea2094294809
4
+ data.tar.gz: 0d23fa917195b34c496c19a7f7f741e4ffce3807706019805469d92ba728c015
5
5
  SHA512:
6
- metadata.gz: 6f91ed683d6637134e8b5738aada3c9a6d75a2642155d94ea0d3c3e1df3046b2a450f5550aea700e5eeb8b3397f623b083d9d190391d34e6ea34a23ed915e563
7
- data.tar.gz: fccc217fe8e00235f3dc800d02b0b605b7d1c80896cc7cfde49a52a24b33a636bba300f921122e347fad0f24b1a5ba31e05ac2e203c60eff27b06da3be0aaac1
6
+ metadata.gz: 2d3610e3ec299cc4bc396ebe9d11169d3da50624aec176a2656bb846f426410027213461715d2cfd83f55f8e53b478c4f734e2115fe9265a4203046d6318358d
7
+ data.tar.gz: f91b7cfefcb02e1078a1ff1f607bb71b55a10460ec8b9707f0e740783aeb0e36d6c54b84538cfa4857ef8daa044f1045d7d2aded18e2e51877acc2542d1a815c
@@ -1,5 +1,5 @@
1
- @import "./tokens/typography";
2
- @import "./tokens/colors";
1
+ @import "tokens/typography";
2
+ @import "tokens/colors";
3
3
 
4
4
  * {
5
5
  box-sizing: border-box;
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import React, {useState} from "react";
2
2
  import { render, screen } from "../utilities/test-utils";
3
3
 
4
4
  import { AdvancedTable } from "../";
@@ -13,7 +13,25 @@ const MOCK_DATA = [
13
13
  scheduledMeetings: "10",
14
14
  children: [
15
15
  {
16
- year: "2011",
16
+ year: "2021",
17
+ quarter: "Q1",
18
+ month: null,
19
+ day: null,
20
+ newEnrollments: "2",
21
+ scheduledMeetings: "35",
22
+ },
23
+ ],
24
+ },
25
+ {
26
+ year: "2022",
27
+ quarter: null,
28
+ month: null,
29
+ day: null,
30
+ newEnrollments: "20",
31
+ scheduledMeetings: "10",
32
+ children: [
33
+ {
34
+ year: "2022",
17
35
  quarter: "Q1",
18
36
  month: null,
19
37
  day: null,
@@ -40,9 +58,70 @@ const columnDefinitions = [
40
58
  },
41
59
  ];
42
60
 
61
+ const subRowHeaders = ["Quarter"]
62
+
43
63
  const testId = "advanced_table";
44
64
 
45
- test("generated scaffold test", () => {
65
+ const AdvancedTableExpandControl = () => {
66
+ const [expanded, setExpanded] = useState({'0': true})
67
+
68
+ const expandedControl = {
69
+ value: expanded,
70
+ onChange: setExpanded,
71
+ }
72
+
73
+ return (
74
+ <div>
75
+ <AdvancedTable
76
+ columnDefinitions={columnDefinitions}
77
+ data={{ testid: testId }}
78
+ expandedControl={expandedControl}
79
+ tableData={MOCK_DATA}
80
+ />
81
+ </div>
82
+ );
83
+ }
84
+
85
+ const AdvancedTableSortControl = () => {
86
+ const [isSortDesc, setIsSortDesc] = useState({desc: false})
87
+
88
+ const sortControl = {
89
+ value: isSortDesc,
90
+ onChange: setIsSortDesc,
91
+ }
92
+
93
+ return (
94
+ <div>
95
+ <AdvancedTable
96
+ columnDefinitions={columnDefinitions}
97
+ data={{testid: testId}}
98
+ sortControl={sortControl}
99
+ tableData={MOCK_DATA}
100
+ >
101
+ <AdvancedTable.Header enableSorting />
102
+ <AdvancedTable.Body />
103
+ </AdvancedTable>
104
+ </div>
105
+ );
106
+ }
107
+
108
+ const tableOptions = {
109
+ initialState: {
110
+ sorting: [
111
+ {
112
+ id: "year",
113
+ desc: true,
114
+ },
115
+ ],
116
+ },
117
+ }
118
+
119
+ const tableProps = {
120
+ container: false,
121
+ sticky: true
122
+ }
123
+
124
+ test("Generates default kit and classname", () => {
46
125
  render(
47
126
  <AdvancedTable
48
127
  columnDefinitions={columnDefinitions}
@@ -53,4 +132,214 @@ test("generated scaffold test", () => {
53
132
 
54
133
  const kit = screen.getByTestId(testId);
55
134
  expect(kit).toBeInTheDocument();
135
+ expect(kit).toHaveClass('pb_advanced_table')
136
+ });
137
+
138
+ test("Generates aria label", () => {
139
+ render(
140
+ <AdvancedTable
141
+ aria={{label:testId}}
142
+ columnDefinitions={columnDefinitions}
143
+ data={{ testid: testId }}
144
+ tableData={MOCK_DATA}
145
+ />
146
+ );
147
+
148
+ const kit = screen.getByTestId(testId);
149
+ expect(kit).toHaveAttribute('aria-label', testId)
150
+ });
151
+
152
+ test("Row toggle button exists and toggles subrows open and closed", () => {
153
+ render(
154
+ <AdvancedTable
155
+ columnDefinitions={columnDefinitions}
156
+ data={{ testid: testId }}
157
+ tableData={MOCK_DATA}
158
+ />
159
+ );
160
+
161
+ const kit = screen.getByTestId(testId);
162
+ const rowButton = kit.querySelector(".gray-icon.expand-toggle-icon")
163
+ expect(rowButton).toBeInTheDocument()
164
+ const subRow1 = kit.querySelector(".bg-white.depth-sub-row-1")
165
+ expect(subRow1).not.toBeInTheDocument()
166
+ rowButton.click()
167
+ const subRow = kit.querySelector(".bg-white.depth-sub-row-1")
168
+ expect(subRow).toBeInTheDocument()
169
+ });
170
+
171
+ test("toggleExpansionAll button exists and toggles subrows open and closed", () => {
172
+ render(
173
+ <AdvancedTable
174
+ columnDefinitions={columnDefinitions}
175
+ data={{ testid: testId }}
176
+ tableData={MOCK_DATA}
177
+ />
178
+ );
179
+
180
+ const kit = screen.getByTestId(testId);
181
+ const toggleButton = kit.querySelector(".gray-icon.toggle-all-icon")
182
+ expect(toggleButton).toBeInTheDocument()
183
+ const subRow1 = kit.querySelector(".bg-white.depth-sub-row-1")
184
+ expect(subRow1).not.toBeInTheDocument()
185
+ toggleButton.click()
186
+ const subRow = kit.querySelector(".bg-white.depth-sub-row-1")
187
+ expect(subRow).toBeInTheDocument()
188
+ });
189
+
190
+ test("loading state + initialLoadingRowCount prop", () => {
191
+ render(
192
+ <AdvancedTable
193
+ columnDefinitions={columnDefinitions}
194
+ data={{ testid: testId }}
195
+ initialLoadingRowsCount={13}
196
+ loading
197
+ tableData={MOCK_DATA}
198
+ />
199
+ );
200
+
201
+ const kit = screen.getByTestId(testId);
202
+ const table = kit.querySelector('table')
203
+ expect(table).toHaveClass('pb_table table-sm table-responsive-none table-card data_table ns_tabular content-loading')
204
+
205
+ const tableBody = kit.querySelector('tbody')
206
+ const tableRows = tableBody.getElementsByTagName('tr')
207
+ expect(tableRows).toHaveLength(13)
208
+ });
209
+
210
+ test("subRowHeaders are rendered", () => {
211
+ render(
212
+ <AdvancedTable
213
+ columnDefinitions={columnDefinitions}
214
+ data={{ testid: testId }}
215
+ tableData={MOCK_DATA}
216
+ >
217
+ <AdvancedTable.Header />
218
+ <AdvancedTable.Body subRowHeaders={subRowHeaders}/>
219
+ </AdvancedTable>
220
+ );
221
+
222
+ const kit = screen.getByTestId(testId);
223
+
224
+ const rowButton = kit.querySelector(".gray-icon.expand-toggle-icon")
225
+ rowButton.click()
226
+
227
+ const subRowHeader = kit.querySelector(".custom-row.bg-silver")
228
+ expect(subRowHeader).toBeInTheDocument()
229
+ });
230
+
231
+ test("expandControl prop works as expected", () => {
232
+ render (<AdvancedTableExpandControl/>)
233
+
234
+ const kit = screen.getByTestId(testId);
235
+ const subRow = kit.querySelector(".bg-white.depth-sub-row-1")
236
+ expect(subRow).toBeInTheDocument()
237
+ })
238
+
239
+ test("tableOptions prop functions as expected", () => {
240
+ render(
241
+ <AdvancedTable
242
+ columnDefinitions={columnDefinitions}
243
+ data={{ testid: testId }}
244
+ tableData={MOCK_DATA}
245
+ tableOptions={tableOptions}
246
+ />
247
+ );
248
+
249
+ const kit = screen.getByTestId(testId);
250
+ const row1 = kit.getElementsByTagName('tr')[1]
251
+
252
+ expect(row1.id).toBe("1-1-0-row")
253
+ });
254
+
255
+ test("tableProps prop functions as expected", () => {
256
+ render(
257
+ <AdvancedTable
258
+ columnDefinitions={columnDefinitions}
259
+ data={{ testid: testId }}
260
+ tableData={MOCK_DATA}
261
+ tableProps={tableProps}
262
+ />
263
+ );
264
+
265
+ const kit = screen.getByTestId(testId);
266
+ const table = kit.querySelector('table')
267
+ expect(table).toHaveClass("pb_table table-sm table-responsive-none data_table sticky-header ns_tabular")
56
268
  });
269
+
270
+ test("enableExpansionIcon changes icon", () => {
271
+ render(
272
+ <AdvancedTable
273
+ columnDefinitions={columnDefinitions}
274
+ data={{ testid: testId }}
275
+ tableData={MOCK_DATA}
276
+ tableProps={tableProps}
277
+ toggleExpansionIcon= "chevron-up"
278
+ />
279
+ );
280
+
281
+ const kit = screen.getByTestId(testId);
282
+ const tableHead = kit.querySelector('table')
283
+ const toggleIcon= tableHead.querySelector(".pb_icon_kit")
284
+ expect(toggleIcon).toHaveClass("fa-chevron-up")
285
+ });
286
+
287
+ test("sortIcon changes icon", () => {
288
+ render(
289
+ <AdvancedTable
290
+ columnDefinitions={columnDefinitions}
291
+ data={{ testid: testId }}
292
+ tableData={MOCK_DATA}
293
+ tableProps={tableProps}
294
+ >
295
+ <AdvancedTable.Header
296
+ enableSorting
297
+ sortIcon= {["chevron-up","chevron-down"]}
298
+ />
299
+ <AdvancedTable.Body />
300
+ </AdvancedTable>
301
+ );
302
+
303
+ const kit = screen.getByTestId(testId);
304
+ const sortIcon = kit.querySelector('.sort-button-icon')
305
+ const icon= sortIcon.querySelector(".pb_icon_kit")
306
+ expect(icon).toHaveClass("fa-chevron-down")
307
+ });
308
+
309
+ test("Sort icon renders with enableSorting + sortControl works as expected", () => {
310
+ render (<AdvancedTableSortControl/>)
311
+
312
+ const kit = screen.getByTestId(testId);
313
+ const sortIcon = kit.querySelector(".sort-button-icon")
314
+ expect(sortIcon).toBeInTheDocument()
315
+
316
+ const row1 = kit.getElementsByTagName('tr')[1]
317
+
318
+ expect(row1.id).toBe("1-1-0-row")
319
+ })
320
+
321
+ test("sort button exists and sorts column data", () => {
322
+ render(
323
+ <AdvancedTable
324
+ columnDefinitions={columnDefinitions}
325
+ data={{ testid: testId }}
326
+ tableData={MOCK_DATA}
327
+ >
328
+ <AdvancedTable.Header enableSorting />
329
+ <AdvancedTable.Body />
330
+ </AdvancedTable>
331
+ );
332
+
333
+ const kit = screen.getByTestId(testId);
334
+
335
+ const sortButton= kit.querySelector(".pb_flex_kit_orientation_row_justify_content_between_align_items_top_spacing_none.pl_xxs.cursor_pointer.header-sort-button.pb_th_link")
336
+ expect(sortButton).toBeInTheDocument()
337
+
338
+ const row1 = kit.getElementsByTagName('tr')[1]
339
+
340
+ expect(row1.id).toBe("0-0-0-row")
341
+ sortButton.click()
342
+
343
+ const row2 = kit.getElementsByTagName('tr')[2]
344
+ expect(row2.id).toBe("0-0-0-row")
345
+ });
@@ -6,9 +6,9 @@
6
6
  @import "../tokens/typography";
7
7
 
8
8
  $pb_button_sizes: (
9
- "sm": $font_smaller,
10
- "md": $font_small,
11
- "lg": ($font_large - 2px),
9
+ "sm": 0.75rem,
10
+ "md": 0.875rem,
11
+ "lg": 1.125rem,
12
12
  );
13
13
 
14
14
  [class*=pb_button_kit]{
@@ -9,7 +9,7 @@
9
9
 
10
10
  $pb_button_size: 40px;
11
11
  $pb_button_v_padding: 7px;
12
- $pb_button_h_padding: 28px;
12
+ $pb_button_h_padding: 34px;
13
13
  $pb_button_hover_darken: 4%;
14
14
  $pb_button_border_width: 0px;
15
15
 
@@ -27,13 +27,12 @@ $pb_button_border_width: 0px;
27
27
  text-rendering: optimizeLegibility;
28
28
  font-size: $font_small;
29
29
  font-weight: $bold;
30
- letter-spacing: $lspace_loose;
31
30
  text-align: center;
32
31
  vertical-align: middle;
33
32
  text-transform: none;
34
33
  border-width: $pb_button_border_width;
35
34
  border-style: solid;
36
- border-radius: $border_rad_heavy;
35
+ border-radius: $border_rad_light;
37
36
  min-height: $pb_button_size;
38
37
  line-height: 1.5;
39
38
  padding: $pb_button_v_padding $pb_button_h_padding;
@@ -24,7 +24,7 @@ $pb_dark_caption_colors: (
24
24
  color: $text_lt_light;
25
25
  text-transform: uppercase;
26
26
  font-size: $font_size;
27
- letter-spacing: $lspace_loosest;
27
+ letter-spacing: $lspace_looser;
28
28
  }
29
29
 
30
30
  @mixin caption_color($color: $text_lt_light) {
@@ -1,5 +1,5 @@
1
- @import "./tokens/colors";
2
- @import "./tokens/spacing";
1
+ @import "tokens/colors";
2
+ @import "tokens/spacing";
3
3
 
4
4
  [class^=pb_collapsible_kit] {
5
5
  padding: $space_md;
@@ -53,7 +53,7 @@ const adjustAxisStyle = (axis) => {
53
53
  /* Change axis label styles */
54
54
  axis.labels.style.fontFamily = typography.font_family_base
55
55
  axis.labels.style.color = colors.charcoal
56
- axis.labels.style.fontWeight = typography.regular
56
+ axis.labels.style.fontWeight = typography.light
57
57
  axis.labels.style.fontSize = typography.font_small
58
58
  }
59
59
 
@@ -27,7 +27,7 @@ const highchartsDarkTheme: ThemeProps = {
27
27
  style: {
28
28
  color: colors.text_dk_default,
29
29
  fontFamily: typography.font_family_base,
30
- fontWeight: typography.bold,
30
+ fontWeight: typography.regular,
31
31
  fontSize: typography.heading_3,
32
32
  },
33
33
  },
@@ -27,7 +27,7 @@ const highchartsTheme: ThemeProps = {
27
27
  style: {
28
28
  color: colors.text_lt_default,
29
29
  fontFamily: typography.font_family_base,
30
- fontWeight: typography.bold,
30
+ fontWeight: typography.regular,
31
31
  fontSize: typography.heading_3,
32
32
  },
33
33
  },
@@ -1,5 +1,5 @@
1
1
  // Manual Import -- Flatpickr Styles
2
- @import "./tokens/typography";
2
+ @import "tokens/typography";
3
3
 
4
4
  .flatpickr-calendar {
5
5
  background: transparent;
@@ -55,7 +55,7 @@ $form_pill_colors: (
55
55
  height: fit-content;
56
56
  height: -moz-fit-content;
57
57
  .pb_form_pill_text, .pb_form_pill_close, .pb_form_pill_tag {
58
- font-size: $font_base;
58
+ font-size: 16px;
59
59
  font-weight: $regular;
60
60
  }
61
61
  .pb_form_pill_text, .pb_form_pill_tag {
@@ -3,12 +3,10 @@
3
3
  <%= pb_rails("button", props: {html_type: "submit", text: "Save Phone Number"}) %>
4
4
  </form>
5
5
 
6
- <% content_for(:pb_js) do %>
7
- <%= javascript_tag do %>
8
- document.addEventListener('DOMContentLoaded', function () {
9
- document.querySelector('#example-form-validation').addEventListener('submit', function (e) {
10
- if (e.target.querySelectorAll('[error]:not([error=""])').length > 0) e.preventDefault();
11
- })
6
+ <%= javascript_tag do %>
7
+ document.addEventListener('DOMContentLoaded', function () {
8
+ document.querySelector('#example-form-validation').addEventListener('submit', function (e) {
9
+ if (e.target.querySelectorAll('[error]:not([error=""])').length > 0) e.preventDefault();
12
10
  })
13
- <% end %>
11
+ })
14
12
  <% end %>
@@ -171,29 +171,27 @@ const PbReactPopover = (props: PbPopoverProps): React.ReactElement => {
171
171
 
172
172
  document.body.addEventListener(
173
173
  "click",
174
- ({ target }) => {
174
+ (e: MouseEvent) => {
175
+ const target = e.target as HTMLElement
176
+
175
177
  const targetIsPopover =
176
- (target as HTMLElement).closest("#" + targetId) !==
177
- null;
178
+ target.closest("#" + targetId) !== null;
178
179
  const targetIsReference =
179
- (target as HTMLElement).closest("#reference-" + targetId) !==
180
- null;
180
+ target.closest("#reference-" + targetId) !== null;
181
+
182
+ const shouldClose = () => {
183
+ setTimeout(() => shouldClosePopover(true), 0);
184
+ }
181
185
 
182
186
  switch (closeOnClick) {
183
187
  case "outside":
184
- if (!targetIsPopover && !targetIsReference) {
185
- shouldClosePopover(true);
186
- }
188
+ if (!targetIsPopover && !targetIsReference) shouldClose();
187
189
  break;
188
190
  case "inside":
189
- if (targetIsPopover) {
190
- shouldClosePopover(true);
191
- }
191
+ if (targetIsPopover) shouldClose();
192
192
  break;
193
193
  case "any":
194
- if (targetIsPopover || !targetIsPopover && !targetIsReference) {
195
- shouldClosePopover(true);
196
- }
194
+ if (targetIsPopover || !targetIsPopover && !targetIsReference) shouldClose();
197
195
  break;
198
196
  }
199
197
  },
@@ -0,0 +1,30 @@
1
+ <%= pb_rails("flex", props: {
2
+ dark: true,
3
+ orientation: "row",
4
+ vertical: "center"
5
+ }) do %>
6
+ <%= pb_rails("body", props: { text: "Click info for more details" }) %>
7
+ &nbsp;
8
+ <%= pb_rails("circle_icon_button", props: {
9
+ variant: "secondary",
10
+ icon: "info",
11
+ id: "actionable-popover-1"
12
+ }) %>
13
+ <%= pb_rails("popover", props: {
14
+ close_on_click: "any",
15
+ trigger_element_id: "actionable-popover-1",
16
+ tooltip_id: "actionable-tooltip-1",
17
+ offset: true,
18
+ position: "top"
19
+ }) do %>
20
+ <%= pb_rails("button", props: { id: "actionable-tooltip-button", text: "Learn more" }) %>
21
+ <% end %>
22
+ <% end %>
23
+
24
+ <%= javascript_tag do %>
25
+ document.addEventListener('DOMContentLoaded', function () {
26
+ document.querySelector('#actionable-tooltip-button').addEventListener('click', function (e) {
27
+ alert("Let's do this")
28
+ }, { once: true })
29
+ })
30
+ <% end %>
@@ -0,0 +1,57 @@
1
+ import React, { useState } from 'react'
2
+ import {
3
+ Body,
4
+ Button,
5
+ CircleIconButton,
6
+ Flex,
7
+ PbReactPopover,
8
+ } from '../..'
9
+
10
+ const PopoverActionableContent = (props) => {
11
+ const [showPopover, setShowPopover] = useState(false)
12
+
13
+ const handleTogglePopover = () => {
14
+ setShowPopover(!showPopover)
15
+ }
16
+
17
+ const handleShouldClosePopover = (shouldClose) => {
18
+ setShowPopover(!shouldClose)
19
+ }
20
+
21
+ const popoverReference = (
22
+ <CircleIconButton
23
+ icon="info"
24
+ onClick={handleTogglePopover}
25
+ variant="secondary"
26
+ />
27
+ )
28
+
29
+ return (
30
+ <Flex
31
+ orientation="row"
32
+ vertical="center"
33
+ {...props}
34
+ >
35
+ <Body text="Click info for more details" />
36
+ &nbsp;
37
+ <PbReactPopover
38
+ closeOnClick="inside"
39
+ offset
40
+ placement="top"
41
+ reference={popoverReference}
42
+ shouldClosePopover={handleShouldClosePopover}
43
+ show={showPopover}
44
+ {...props}
45
+ >
46
+ <Body textAlign="center">
47
+ <Button
48
+ onClick={() => {alert("Let's do this!")}}
49
+ text="Learn More"
50
+ />
51
+ </Body>
52
+ </PbReactPopover>
53
+ </Flex>
54
+ )
55
+ }
56
+
57
+ export default PopoverActionableContent
@@ -5,6 +5,7 @@ examples:
5
5
  - popover_close: Close Options
6
6
  - popover_z_index: Set Z-Index
7
7
  - popover_scroll_height: Scroll and Height Settings
8
+ - popover_actionable_content: With Actionable Content
8
9
 
9
10
  react:
10
11
  - popover_default: Default
@@ -12,4 +13,4 @@ examples:
12
13
  - popover_close: Close Options
13
14
  - popover_z_index: Set Z-Index
14
15
  - popover_scroll_height: Scroll and Height Settings
15
-
16
+ - popover_actionable_content: With Actionable Content
@@ -3,3 +3,4 @@ export { default as PopoverList } from './_popover_list.jsx'
3
3
  export { default as PopoverClose } from './_popover_close.jsx'
4
4
  export { default as PopoverZIndex } from './_popover_z_index.jsx'
5
5
  export { default as PopoverScrollHeight } from './_popover_scroll_height.jsx'
6
+ export { default as PopoverActionableContent } from './_popover_actionable_content.jsx'