playbook_ui 15.0.0 → 15.1.0.pre.alpha.PLAY2320advancedtablepaginationPropsbug10943
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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +3 -0
- data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +24 -11
- data/app/pb_kits/playbook/pb_advanced_table/Components/VirtualizedTableView.tsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +0 -2
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/RowUtils.ts +7 -2
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +67 -13
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.jsx +2 -2
- data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_button/docs/_button_managed_disabled.html.erb +31 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_managed_disabled.md +7 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_managed_disabled_helper.html.erb +21 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_managed_disabled_helper.md +7 -0
- data/app/pb_kits/playbook/pb_button/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_button/index.js +99 -0
- data/app/pb_kits/playbook/pb_card/_card.scss +12 -4
- data/app/pb_kits/playbook/pb_card/_card.tsx +3 -3
- data/app/pb_kits/playbook/pb_card/_card_mixin.scss +10 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_highlight.html.erb +3 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_highlight.jsx +8 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.tsx +2 -0
- data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.html.erb +1 -0
- data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +1 -0
- data/app/pb_kits/playbook/pb_contact/_contact.tsx +5 -0
- data/app/pb_kits/playbook/pb_contact/contact.rb +4 -0
- data/app/pb_kits/playbook/pb_contact/contact.test.js +21 -1
- data/app/pb_kits/playbook/pb_contact/docs/_contact_default.html.erb +16 -1
- data/app/pb_kits/playbook/pb_contact/docs/_contact_default.jsx +15 -0
- data/app/pb_kits/playbook/pb_contact/docs/_contact_default.md +5 -0
- data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.html.erb +6 -0
- data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.jsx +6 -0
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +6 -4
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +48 -4
- data/app/pb_kits/playbook/pb_dialog/_close_icon.tsx +5 -1
- data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +6 -8
- data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +1 -1
- data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +2 -2
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +9 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.html.erb +3 -3
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
- data/app/pb_kits/playbook/pb_icon/_icon.tsx +13 -2
- data/app/pb_kits/playbook/pb_icon/icon.rb +9 -1
- data/app/pb_kits/playbook/pb_icon_button/_icon_button.tsx +1 -0
- data/app/pb_kits/playbook/pb_icon_button/icon_button.html.erb +2 -1
- data/app/pb_kits/playbook/pb_icon_circle/icon_circle.html.erb +1 -1
- data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.tsx +3 -1
- data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.html.erb +5 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.jsx +24 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_loading_inline/loading_inline.html.erb +1 -1
- data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +11 -0
- data/app/pb_kits/playbook/pb_nav/_item.tsx +19 -5
- data/app/pb_kits/playbook/pb_nav/_nav.scss +27 -0
- data/app/pb_kits/playbook/pb_nav/_nav.test.js +16 -0
- data/app/pb_kits/playbook/pb_nav/_nav.tsx +5 -0
- data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.html.erb +6 -0
- data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.jsx +39 -0
- data/app/pb_kits/playbook/pb_nav/docs/_horizontal_nav_extendedunderline.md +1 -0
- data/app/pb_kits/playbook/pb_nav/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_nav/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_nav/item.html.erb +6 -2
- data/app/pb_kits/playbook/pb_nav/nav.rb +6 -1
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.html.erb +3 -3
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.html.erb +3 -3
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_confirmation.html.erb +3 -3
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.html.erb +3 -3
- data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.html.erb +3 -3
- data/app/pb_kits/playbook/pb_pb_bar_graph/_pb_bar_graph.scss +0 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/_pb_bar_graph.tsx +62 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors.html.erb +35 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors.jsx +49 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors_rails.md +1 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors_react.md +2 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.html.erb +38 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.jsx +51 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.html.erb +46 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.jsx +62 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.md +3 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_horizontal.html.erb +47 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_horizontal.jsx +60 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend.html.erb +25 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend.jsx +36 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_non_clickable.jsx +44 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.html.erb +100 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.jsx +126 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_negative_numbers.html.erb +32 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_negative_numbers.jsx +48 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_secondary_y_axis.html.erb +68 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_secondary_y_axis.jsx +81 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.html.erb +31 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.jsx +42 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.md +2 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_stacked.html.erb +35 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_stacked.jsx +51 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/example.yml +27 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/docs/index.js +11 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/pbBarGraphTheme.ts +106 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/pb_bar_graph.html.erb +1 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/pb_bar_graph.rb +28 -0
- data/app/pb_kits/playbook/pb_pb_bar_graph/pbbargraph.test.jsx +31 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/_pb_circle_chart.scss +3 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/_pb_circle_chart.tsx +62 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.html.erb +31 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.jsx +81 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.html.erb +25 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.jsx +40 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.md +5 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.html.erb +27 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.jsx +39 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.md +5 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.html.erb +93 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.jsx +131 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.md +14 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.html.erb +42 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.jsx +58 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.html.erb +24 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.jsx +38 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.html.erb +22 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.jsx +33 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.html.erb +118 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.jsx +144 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_live_data.jsx +60 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.html.erb +24 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.jsx +42 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.html.erb +38 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.jsx +52 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/example.yml +29 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/docs/index.js +11 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/pbCircleChartTheme.ts +88 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.html.erb +1 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.rb +28 -0
- data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.test.jsx +51 -0
- data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.html.erb +2 -2
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +13 -5
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.html.erb +23 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +45 -7
- data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +4 -1
- data/app/pb_kits/playbook/pb_section_separator/section_separator.test.js +165 -0
- data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +3 -0
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.html.erb +41 -0
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.jsx +80 -0
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.md +1 -0
- data/app/pb_kits/playbook/pb_text_input/docs/example.yml +3 -0
- data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -3
- data/app/pb_kits/playbook/pb_text_input/text_input.test.js +38 -0
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +24 -8
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.html.erb +0 -10
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.jsx +0 -9
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb +3 -17
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +0 -15
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +0 -2
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.jsx +0 -2
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.md +5 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.html.erb +12 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.jsx +25 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_current_year.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.html.erb +4 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.jsx +17 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_date.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.html.erb +18 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.jsx +44 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_show_time.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.html.erb +0 -14
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.jsx +0 -14
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.html.erb +0 -4
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.jsx +0 -4
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.jsx +0 -1
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.md +5 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.html.erb +16 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.jsx +30 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_current_year.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.html.erb +16 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.jsx +30 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_date.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.html.erb +26 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.jsx +41 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_show_time.md +1 -0
- data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +18 -6
- data/app/pb_kits/playbook/pb_timestamp/docs/index.js +6 -0
- data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +29 -7
- data/app/pb_kits/playbook/pb_timestamp/timestamp.test.js +69 -4
- data/dist/chunks/{_line_graph-CIyKqNGy.js → _line_graph-C9stNsP3.js} +1 -1
- data/dist/chunks/_typeahead-D3MtsWXG.js +6 -0
- data/dist/chunks/_weekday_stacked-F-TrWrrZ.js +37 -0
- data/dist/chunks/componentRegistry-DzmmLR2x.js +1 -0
- data/dist/chunks/{lib-DgtxnJqa.js → lib-QZuu1ltS.js} +2 -2
- data/dist/chunks/{pb_form_validation-_NsOWfBS.js → pb_form_validation-CleM960_.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +16 -2
- data/dist/playbook-doc.js +2 -2
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/engine.rb +0 -1
- data/lib/playbook/forms/builder/form_field_builder.rb +37 -2
- data/lib/playbook/kit_base.rb +23 -2
- data/lib/playbook/version.rb +2 -2
- metadata +116 -28
- data/app/pb_kits/playbook/pb_dialog/dialogHelper.js +0 -65
- data/app/pb_kits/playbook/pb_timestamp/docs/_time_stamp_default.md +0 -1
- data/dist/chunks/_typeahead-B-mDRLxH.js +0 -6
- data/dist/chunks/_weekday_stacked-B_lp1Spt.js +0 -37
|
@@ -140,7 +140,8 @@ const { filteredPadding, filteredMargin } = filterItemSpacing(itemSpacing);
|
|
|
140
140
|
delete filteredProps?.marginLeft;
|
|
141
141
|
|
|
142
142
|
|
|
143
|
-
const
|
|
143
|
+
const isLink = !!link
|
|
144
|
+
const Tag = isLink ? "a" : "div"
|
|
144
145
|
const activeClass = active === true ? "active" : "";
|
|
145
146
|
const highlightedBorderClass = active === true && highlighted_border === false ? "highlighted_border_none" : "";
|
|
146
147
|
const collapsibleTrailClass = collapsible && collapsibleTrail ? "collapsible_trail" : "";
|
|
@@ -200,6 +201,13 @@ const { filteredPadding, filteredMargin } = filterItemSpacing(itemSpacing);
|
|
|
200
201
|
|
|
201
202
|
const collapsibleClasses = buildCss("collapsible_nav_wrapper", activeClass, highlightedBorderClass, collapsibleTrailClass)
|
|
202
203
|
|
|
204
|
+
const handleKeyDown = (e: React.KeyboardEvent) => {
|
|
205
|
+
if (!isLink && (e.key === "Enter" || e.key === " ")) {
|
|
206
|
+
e.preventDefault()
|
|
207
|
+
onClick?.()
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
203
211
|
return (
|
|
204
212
|
<>
|
|
205
213
|
{collapsible ? (
|
|
@@ -222,15 +230,18 @@ const { filteredPadding, filteredMargin } = filterItemSpacing(itemSpacing);
|
|
|
222
230
|
{...dataProps}
|
|
223
231
|
{...htmlProps}
|
|
224
232
|
className={classes}
|
|
225
|
-
href={link}
|
|
233
|
+
href={isLink ? link : undefined}
|
|
226
234
|
id={id}
|
|
227
|
-
|
|
235
|
+
role={!isLink ? "button" : undefined}
|
|
236
|
+
tabIndex={!isLink ? 0 : undefined}
|
|
237
|
+
target={isLink ? target : undefined}
|
|
228
238
|
>
|
|
229
239
|
{imageUrl && (
|
|
230
240
|
<div
|
|
231
241
|
className="pb_nav_list_item_icon_section_collapsible"
|
|
232
242
|
key={imageUrl}
|
|
233
243
|
onClick={(e) => handleIconClick(e)}
|
|
244
|
+
onKeyDown={!isLink ? handleKeyDown : undefined}
|
|
234
245
|
>
|
|
235
246
|
<Image className="pb_nav_img_wrapper"
|
|
236
247
|
url={imageUrl}
|
|
@@ -265,10 +276,13 @@ const { filteredPadding, filteredMargin } = filterItemSpacing(itemSpacing);
|
|
|
265
276
|
{...dataProps}
|
|
266
277
|
{...htmlProps}
|
|
267
278
|
className={classes}
|
|
268
|
-
href={link}
|
|
279
|
+
href={isLink ? link : undefined}
|
|
269
280
|
id={id}
|
|
270
281
|
onClick={onClick}
|
|
271
|
-
|
|
282
|
+
onKeyDown={!isLink ? handleKeyDown : undefined}
|
|
283
|
+
role={!isLink ? "button" : undefined}
|
|
284
|
+
tabIndex={!isLink ? 0 : undefined}
|
|
285
|
+
target={isLink ? target : undefined}
|
|
272
286
|
>
|
|
273
287
|
{imageUrl && (
|
|
274
288
|
<div className="pb_nav_list_item_icon_section"
|
|
@@ -48,3 +48,30 @@
|
|
|
48
48
|
&:hover { cursor: pointer; }
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
+
|
|
52
|
+
.pb_nav_extended_underline {
|
|
53
|
+
position: relative;
|
|
54
|
+
|
|
55
|
+
// Add full-width border using pseudo-element so as not to break the active item border
|
|
56
|
+
&::after {
|
|
57
|
+
content: '';
|
|
58
|
+
position: absolute;
|
|
59
|
+
bottom: 0;
|
|
60
|
+
left: 0;
|
|
61
|
+
right: 0;
|
|
62
|
+
height: 3px;
|
|
63
|
+
background-color: $border_light;
|
|
64
|
+
z-index: 1;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.pb_nav_list_kit_item_active.pb_nav_list_item_link {
|
|
68
|
+
position: relative;
|
|
69
|
+
z-index: 2;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
&.dark {
|
|
73
|
+
&::after {
|
|
74
|
+
background-color: rgba($white, $opacity_3);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -117,3 +117,19 @@ test('should change variant', () => {
|
|
|
117
117
|
const kit = screen.getByTestId(navTestId)
|
|
118
118
|
expect(kit).toHaveClass('pb_nav_list_subtle_vertical_highlight')
|
|
119
119
|
})
|
|
120
|
+
|
|
121
|
+
test('extendedUnderline should work as expected', () => {
|
|
122
|
+
render(
|
|
123
|
+
<NavDefault extendedUnderline
|
|
124
|
+
orientation="horizontal"
|
|
125
|
+
/>
|
|
126
|
+
)
|
|
127
|
+
const kit = screen.getByTestId(navTestId)
|
|
128
|
+
expect(kit).toHaveClass('pb_nav_extended_underline')
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
test('extendedUnderline should not be applied when orientation is vertical', () => {
|
|
132
|
+
render(<NavDefault extendedUnderline />)
|
|
133
|
+
const kit = screen.getByTestId(navTestId)
|
|
134
|
+
expect(kit).not.toHaveClass('pb_nav_extended_underline')
|
|
135
|
+
})
|
|
@@ -14,6 +14,7 @@ type NavProps = {
|
|
|
14
14
|
className?: string | string[],
|
|
15
15
|
data?: Record<string, unknown>,
|
|
16
16
|
dark?: boolean,
|
|
17
|
+
extendedUnderline?: boolean,
|
|
17
18
|
highlight?: boolean,
|
|
18
19
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
|
19
20
|
id?: string,
|
|
@@ -33,6 +34,7 @@ const Nav = (props: NavProps): React.ReactElement => {
|
|
|
33
34
|
className,
|
|
34
35
|
data = {},
|
|
35
36
|
dark = false,
|
|
37
|
+
extendedUnderline = false,
|
|
36
38
|
highlight = true,
|
|
37
39
|
htmlOptions = {},
|
|
38
40
|
id,
|
|
@@ -52,6 +54,9 @@ const Nav = (props: NavProps): React.ReactElement => {
|
|
|
52
54
|
highlight: highlight,
|
|
53
55
|
borderless: borderless,
|
|
54
56
|
}),
|
|
57
|
+
// extended underline is only applicable for horizontal normal nav, should not
|
|
58
|
+
// affect other variants or orientations
|
|
59
|
+
variant === 'normal' && orientation === 'horizontal' && extendedUnderline && 'pb_nav_extended_underline',
|
|
55
60
|
globalProps(props),
|
|
56
61
|
className
|
|
57
62
|
)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<%= pb_rails("nav", props: { orientation: "horizontal", extended_underline: true }) do %>
|
|
2
|
+
<%= pb_rails("nav/item", props: { text: "About", link: "#" }) %>
|
|
3
|
+
<%= pb_rails("nav/item", props: { text: "Case Studies", link: "#", active: true }) %>
|
|
4
|
+
<%= pb_rails("nav/item", props: { text: "Service ", link: "#" }) %>
|
|
5
|
+
<%= pb_rails("nav/item", props: { text: "Contacts", link: "#" }) %>
|
|
6
|
+
<% end %>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import Nav from '../_nav'
|
|
4
|
+
import NavItem from '../_item'
|
|
5
|
+
|
|
6
|
+
const HorizontalNavExtendedunderline = (props) => {
|
|
7
|
+
return (
|
|
8
|
+
<Nav
|
|
9
|
+
extendedUnderline
|
|
10
|
+
link="#"
|
|
11
|
+
orientation="horizontal"
|
|
12
|
+
{...props}
|
|
13
|
+
>
|
|
14
|
+
<NavItem
|
|
15
|
+
link="#"
|
|
16
|
+
text="About"
|
|
17
|
+
{...props}
|
|
18
|
+
/>
|
|
19
|
+
<NavItem
|
|
20
|
+
active
|
|
21
|
+
link="#"
|
|
22
|
+
text="Case Studies"
|
|
23
|
+
{...props}
|
|
24
|
+
/>
|
|
25
|
+
<NavItem
|
|
26
|
+
link="#"
|
|
27
|
+
text="Service"
|
|
28
|
+
{...props}
|
|
29
|
+
/>
|
|
30
|
+
<NavItem
|
|
31
|
+
link="#"
|
|
32
|
+
text="Contacts"
|
|
33
|
+
{...props}
|
|
34
|
+
/>
|
|
35
|
+
</Nav>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export default HorizontalNavExtendedunderline
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
The optional `extendedUnderline`/`extended_underline` prop can be used with the default `normal` variant of the horizontal orientation of the nav to extend the underline to take up the full width of the container.
|
|
@@ -17,6 +17,7 @@ examples:
|
|
|
17
17
|
- horizontal_nav: Horizontal Nav
|
|
18
18
|
- subtle_horizontal_nav: Subtle Horizontal Nav
|
|
19
19
|
- bold_horizontal_nav: Bold Horizontal Nav
|
|
20
|
+
- horizontal_nav_extendedunderline: Horizontal Nav With Extended Underline
|
|
20
21
|
- block_nav: Block
|
|
21
22
|
- block_no_title_nav: Without Title
|
|
22
23
|
- new_tab: Open in a New Tab
|
|
@@ -42,6 +43,7 @@ examples:
|
|
|
42
43
|
- horizontal_nav: Horizontal Nav
|
|
43
44
|
- subtle_horizontal_nav: Subtle Horizontal Nav
|
|
44
45
|
- bold_horizontal_nav: Bold Horizontal Nav
|
|
46
|
+
- horizontal_nav_extendedunderline: Horizontal Nav With Extended Underline
|
|
45
47
|
- block_nav: Block
|
|
46
48
|
- block_no_title_nav: Without Title
|
|
47
49
|
- new_tab: Open in a New Tab
|
|
@@ -19,4 +19,5 @@ export { default as CollapsibleNavWithAllOptions} from "./_collapsible_nav_with_
|
|
|
19
19
|
export { default as NavWithFontControl } from "./_nav_with_font_control.jsx"
|
|
20
20
|
export { default as NavWithSpacingControl } from "./_nav_with_spacing_control.jsx"
|
|
21
21
|
export { default as CollapsibleNavItemSpacing } from "./_collapsible_nav_item_spacing.jsx"
|
|
22
|
-
export { default as CollapsibleNavNoIcon } from "./_collapsible_nav_no_icon.jsx"
|
|
22
|
+
export { default as CollapsibleNavNoIcon } from "./_collapsible_nav_no_icon.jsx"
|
|
23
|
+
export { default as HorizontalNavExtendedunderline } from './_horizontal_nav_extendedunderline.jsx'
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
<%= pb_rails("collapsible/collapsible_main", props: { name: "default-collapsible-nav", icon: object.collapsible_icons, size: "xs", dark: object.dark, classname:object.margin_classes }) do %>
|
|
4
4
|
<%= pb_content_tag( object.tag,
|
|
5
5
|
href: object.link && object.link,
|
|
6
|
-
target: object.link && object.target
|
|
6
|
+
target: object.link && object.target,
|
|
7
|
+
onkeydown: !object.link ? "if(event.key==='Enter'||event.key===' '){event.preventDefault(); this.click();}" : nil,
|
|
8
|
+
tabindex: object.link ? nil : 0,
|
|
7
9
|
) do %>
|
|
8
10
|
<% if object.image_url %>
|
|
9
11
|
<%= pb_rails("image", props: { url: object.image_url, classname: "pb_nav_img_wrapper_collapsible" }) %>
|
|
@@ -23,7 +25,9 @@
|
|
|
23
25
|
<% else %>
|
|
24
26
|
<%= pb_content_tag( object.tag,
|
|
25
27
|
href: object.link && object.link,
|
|
26
|
-
target: object.link && object.target
|
|
28
|
+
target: object.link && object.target,
|
|
29
|
+
onkeydown: !object.link ? "if(event.key==='Enter'||event.key===' '){event.preventDefault(); this.click();}" : nil,
|
|
30
|
+
tabindex: object.link ? nil : 0,
|
|
27
31
|
) do %>
|
|
28
32
|
<% if object.image_url %>
|
|
29
33
|
<%= pb_rails("image", props: { url: object.image_url, classname: "pb_nav_img_wrapper" }) %>
|
|
@@ -14,9 +14,10 @@ module Playbook
|
|
|
14
14
|
prop :highlight, type: Playbook::Props::Boolean, default: true
|
|
15
15
|
prop :borderless, type: Playbook::Props::Boolean, default: false
|
|
16
16
|
prop :tabbing, type: Playbook::Props::Boolean, default: false
|
|
17
|
+
prop :extended_underline, type: Playbook::Props::Boolean, default: false
|
|
17
18
|
|
|
18
19
|
def classname
|
|
19
|
-
generate_classname("pb_nav_list", variant, orientation, highlight_class, borderless_class)
|
|
20
|
+
generate_classname("pb_nav_list", variant, orientation, highlight_class, borderless_class) + extended_underline_class
|
|
20
21
|
end
|
|
21
22
|
|
|
22
23
|
def data
|
|
@@ -34,6 +35,10 @@ module Playbook
|
|
|
34
35
|
def borderless_class
|
|
35
36
|
borderless ? "borderless" : nil
|
|
36
37
|
end
|
|
38
|
+
|
|
39
|
+
def extended_underline_class
|
|
40
|
+
variant === "normal" && orientation === "horizontal" && extended_underline ? " pb_nav_extended_underline" : ""
|
|
41
|
+
end
|
|
37
42
|
end
|
|
38
43
|
end
|
|
39
44
|
end
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
<%= pb_rails("caption", props: { size: 'xs', text: "hello", id: "caption_breached" }) %>
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
window.addEventListener("
|
|
7
|
+
<script>
|
|
8
|
+
window.addEventListener("load", () => {
|
|
9
9
|
|
|
10
10
|
// variables for the kits you are targeting
|
|
11
11
|
const passphrase = document.querySelector(".passphrase_breached").querySelector("input")
|
|
@@ -142,4 +142,4 @@
|
|
|
142
142
|
});
|
|
143
143
|
|
|
144
144
|
})
|
|
145
|
-
|
|
145
|
+
</script>
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
<%= pb_rails("caption", props: { size: 'xs', text: "hello", id: "caption_common" }) %>
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
window.addEventListener("
|
|
13
|
+
<script>
|
|
14
|
+
window.addEventListener("load", () => {
|
|
15
15
|
|
|
16
16
|
const commonText = document.querySelector("#body_common")
|
|
17
17
|
|
|
@@ -133,4 +133,4 @@
|
|
|
133
133
|
});
|
|
134
134
|
|
|
135
135
|
})
|
|
136
|
-
|
|
136
|
+
</script>
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
<div id="match"> </div>
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
window.addEventListener("
|
|
7
|
+
<script>
|
|
8
|
+
window.addEventListener("load", () => {
|
|
9
9
|
|
|
10
10
|
const useState = (defaultValue) => {
|
|
11
11
|
let value = defaultValue;
|
|
@@ -48,4 +48,4 @@
|
|
|
48
48
|
|
|
49
49
|
}
|
|
50
50
|
})
|
|
51
|
-
|
|
51
|
+
</script>
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
window.addEventListener("
|
|
35
|
+
<script>
|
|
36
|
+
window.addEventListener("load", () => {
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
// variables for the passphrase kits you are targeting
|
|
@@ -320,4 +320,4 @@
|
|
|
320
320
|
|
|
321
321
|
|
|
322
322
|
})
|
|
323
|
-
|
|
323
|
+
</script>
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
<%= pb_rails("text_input", props: { label: "Passphrase Strength", value: "0", disabled: true, id: "calc_strength_change" }) %>
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
window.addEventListener("
|
|
10
|
+
<script>
|
|
11
|
+
window.addEventListener("load", () => {
|
|
12
12
|
|
|
13
13
|
// variables for the kits you are targeting
|
|
14
14
|
const passphrase = document.querySelector(".passphrase_change").querySelector("input")
|
|
@@ -120,4 +120,4 @@
|
|
|
120
120
|
});
|
|
121
121
|
|
|
122
122
|
})
|
|
123
|
-
|
|
123
|
+
</script>
|
|
File without changes
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React, { useMemo } from "react"
|
|
2
|
+
import { globalProps } from "../utilities/globalProps";
|
|
3
|
+
import { buildAriaProps, buildDataProps, buildHtmlProps } from "../utilities/props";
|
|
4
|
+
import Highcharts from "highcharts"
|
|
5
|
+
import HighchartsReact from "highcharts-react-official"
|
|
6
|
+
|
|
7
|
+
import pbBarGraphTheme from "./pbBarGraphTheme"
|
|
8
|
+
|
|
9
|
+
import classnames from "classnames";
|
|
10
|
+
|
|
11
|
+
type PbBarGraphProps = {
|
|
12
|
+
|
|
13
|
+
options: Record<string, unknown>
|
|
14
|
+
className?: string
|
|
15
|
+
aria?: { [key: string]: string };
|
|
16
|
+
data?: { [key: string]: string };
|
|
17
|
+
id: string;
|
|
18
|
+
htmlOptions?: {[key: string]: string | number | boolean | (() => void)};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const PbBarGraph = ({
|
|
22
|
+
aria = {},
|
|
23
|
+
data = {},
|
|
24
|
+
id,
|
|
25
|
+
htmlOptions = {},
|
|
26
|
+
options,
|
|
27
|
+
className = "pb_pb_bar_graph",
|
|
28
|
+
}: PbBarGraphProps): React.ReactElement => {
|
|
29
|
+
|
|
30
|
+
const ariaProps = buildAriaProps(aria);
|
|
31
|
+
const dataProps = buildDataProps(data)
|
|
32
|
+
const htmlProps = buildHtmlProps(htmlOptions);
|
|
33
|
+
|
|
34
|
+
const mergedOptions = useMemo(() => {
|
|
35
|
+
if (!options || typeof options !== "object") {
|
|
36
|
+
// eslint-disable-next-line no-console
|
|
37
|
+
console.error("❌ Invalid options passed to <BarGraph />", options)
|
|
38
|
+
return {}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return Highcharts.merge({}, pbBarGraphTheme, options)
|
|
42
|
+
}, [options])
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
|
|
46
|
+
<div>
|
|
47
|
+
<HighchartsReact
|
|
48
|
+
containerProps={{
|
|
49
|
+
className: classnames(globalProps, className),
|
|
50
|
+
id: id,
|
|
51
|
+
...ariaProps,
|
|
52
|
+
...dataProps,
|
|
53
|
+
...htmlProps
|
|
54
|
+
}}
|
|
55
|
+
highcharts={Highcharts}
|
|
56
|
+
options={mergedOptions}
|
|
57
|
+
/>
|
|
58
|
+
</div>
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export default PbBarGraph
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<% chart_data = [{
|
|
2
|
+
name: 'Installation',
|
|
3
|
+
data: [1475,200,3000,654,656]
|
|
4
|
+
}, {
|
|
5
|
+
name: 'Manufacturing',
|
|
6
|
+
data: [4434,524,2320,440,500]
|
|
7
|
+
}, {
|
|
8
|
+
name: 'Sales & Distribution',
|
|
9
|
+
data: [3387,743,1344,434,440,]
|
|
10
|
+
}, {
|
|
11
|
+
name: 'Project Development',
|
|
12
|
+
data: [3227,878,999,780,1000]
|
|
13
|
+
}, {
|
|
14
|
+
name: 'Other',
|
|
15
|
+
data: [1111,677,3245,500,200]
|
|
16
|
+
}] %>
|
|
17
|
+
|
|
18
|
+
<% chart_options = {
|
|
19
|
+
series: chart_data,
|
|
20
|
+
title: {
|
|
21
|
+
text: "Bar Graph with Custom Data Colors",
|
|
22
|
+
},
|
|
23
|
+
xAxis: {
|
|
24
|
+
categories: ["Jan", "Feb", "Mar", "Apr", "May"],
|
|
25
|
+
},
|
|
26
|
+
yAxis: {
|
|
27
|
+
title: {
|
|
28
|
+
text: "Number of Employees",
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
colors: ['#1CA05C', '#FD804C', '#144075', '#00C4D7', '#DA0014'],
|
|
32
|
+
}
|
|
33
|
+
%>
|
|
34
|
+
|
|
35
|
+
<%= pb_rails("pb_bar_graph", props: {options: chart_options}) %>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { PbBarGraph } from 'playbook-ui'
|
|
3
|
+
import colors from '../../tokens/exports/_colors.module.scss'
|
|
4
|
+
|
|
5
|
+
const chartData = [{
|
|
6
|
+
name: 'Installation',
|
|
7
|
+
data: [1475, 200, 3000, 654, 656],
|
|
8
|
+
}, {
|
|
9
|
+
name: 'Manufacturing',
|
|
10
|
+
data: [4434, 524, 2320, 440, 500],
|
|
11
|
+
}, {
|
|
12
|
+
name: 'Sales & Distribution',
|
|
13
|
+
data: [3387, 743, 1344, 434, 440],
|
|
14
|
+
}, {
|
|
15
|
+
name: 'Project Development',
|
|
16
|
+
data: [3227, 878, 999, 780, 1000],
|
|
17
|
+
}, {
|
|
18
|
+
name: 'Other',
|
|
19
|
+
data: [1111, 677, 3245, 500, 200],
|
|
20
|
+
}]
|
|
21
|
+
|
|
22
|
+
const chartOptions = {
|
|
23
|
+
series: chartData,
|
|
24
|
+
title: {
|
|
25
|
+
text: "Bar Graph with Custom Data Colors",
|
|
26
|
+
},
|
|
27
|
+
xAxis: {
|
|
28
|
+
categories: ["Jan", "Feb", "Mar", "Apr", "May"],
|
|
29
|
+
},
|
|
30
|
+
yAxis: {
|
|
31
|
+
title: {
|
|
32
|
+
text: "Number of Employees",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
colors: [colors.data_4, colors.data_5, colors.data_6, colors.data_7, colors.data_8],
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const PbBarGraphColors = () => {
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<div>
|
|
42
|
+
<PbBarGraph
|
|
43
|
+
options={chartOptions}
|
|
44
|
+
/>
|
|
45
|
+
</div>
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export default PbBarGraphColors
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Custom data colors allow for color customization to match the needs of business requirements. To accomplish this, you can use hex values.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<% chart_data = [{
|
|
2
|
+
name: 'Installation',
|
|
3
|
+
data: [1475,200,3000,654,656]
|
|
4
|
+
}, {
|
|
5
|
+
name: 'Manufacturing',
|
|
6
|
+
data: [4434,524,2320,440,500]
|
|
7
|
+
}, {
|
|
8
|
+
name: 'Sales & Distribution',
|
|
9
|
+
data: [3387,743,1344,434,440,]
|
|
10
|
+
}, {
|
|
11
|
+
name: 'Project Development',
|
|
12
|
+
data: [3227,878,999,780,1000]
|
|
13
|
+
}, {
|
|
14
|
+
name: 'Other',
|
|
15
|
+
data: [1111,677,3245,500,200]
|
|
16
|
+
}] %>
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
<% chart_options = {
|
|
20
|
+
series: chart_data,
|
|
21
|
+
title: {
|
|
22
|
+
text: 'Solar Employment Growth by Sector, 2010-2016',
|
|
23
|
+
},
|
|
24
|
+
subtitle: {
|
|
25
|
+
text: 'Source: thesolarfoundation.com',
|
|
26
|
+
},
|
|
27
|
+
xAxis: {
|
|
28
|
+
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
|
|
29
|
+
},
|
|
30
|
+
yAxis: {
|
|
31
|
+
title: {
|
|
32
|
+
text: 'Number of Employees',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
}
|
|
36
|
+
%>
|
|
37
|
+
|
|
38
|
+
<%= pb_rails("pb_bar_graph", props: {options: chart_options}) %>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { PbBarGraph } from 'playbook-ui'
|
|
3
|
+
|
|
4
|
+
const chartData = [{
|
|
5
|
+
name: 'Installation',
|
|
6
|
+
data: [1475, 200, 3000, 654, 656],
|
|
7
|
+
}, {
|
|
8
|
+
name: 'Manufacturing',
|
|
9
|
+
data: [4434, 524, 2320, 440, 500],
|
|
10
|
+
}, {
|
|
11
|
+
name: 'Sales & Distribution',
|
|
12
|
+
data: [3387, 743, 1344, 434, 440],
|
|
13
|
+
}, {
|
|
14
|
+
name: 'Project Development',
|
|
15
|
+
data: [3227, 878, 999, 780, 1000],
|
|
16
|
+
}, {
|
|
17
|
+
name: 'Other',
|
|
18
|
+
data: [1111, 677, 3245, 500, 200],
|
|
19
|
+
}]
|
|
20
|
+
|
|
21
|
+
const chartOptions = {
|
|
22
|
+
series: chartData,
|
|
23
|
+
title: {
|
|
24
|
+
text: 'Solar Employment Growth by Sector, 2010-2016',
|
|
25
|
+
},
|
|
26
|
+
subtitle: {
|
|
27
|
+
text: 'Source: thesolarfoundation.com',
|
|
28
|
+
},
|
|
29
|
+
xAxis: {
|
|
30
|
+
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
|
|
31
|
+
},
|
|
32
|
+
yAxis: {
|
|
33
|
+
title: {
|
|
34
|
+
text: 'Number of Employees',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const PbBarGraphDefault = (props) => {
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<div>
|
|
43
|
+
<PbBarGraph
|
|
44
|
+
{...props}
|
|
45
|
+
options={chartOptions}
|
|
46
|
+
/>
|
|
47
|
+
</div>
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default PbBarGraphDefault
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<% chart_data = [{
|
|
2
|
+
name: 'Number of Installations',
|
|
3
|
+
data: [1475,200,3000,654,656]
|
|
4
|
+
}] %>
|
|
5
|
+
|
|
6
|
+
<% chart_options_pixel = {
|
|
7
|
+
chart: {
|
|
8
|
+
height: "300"
|
|
9
|
+
},
|
|
10
|
+
series: chart_data,
|
|
11
|
+
title: {
|
|
12
|
+
text: "Fixed Height (300px)",
|
|
13
|
+
},
|
|
14
|
+
xAxis: {
|
|
15
|
+
categories: ["Jan", "Feb", "Mar", "Apr", "May"],
|
|
16
|
+
},
|
|
17
|
+
yAxis: {
|
|
18
|
+
title: {
|
|
19
|
+
text: "Number of Employees",
|
|
20
|
+
},
|
|
21
|
+
}
|
|
22
|
+
} %>
|
|
23
|
+
|
|
24
|
+
<%= pb_rails("pb_bar_graph", props: {options: chart_options_pixel}) %>
|
|
25
|
+
|
|
26
|
+
<br /><br />
|
|
27
|
+
|
|
28
|
+
<% chart_options_percentage = {
|
|
29
|
+
chart: {
|
|
30
|
+
height: "50%"
|
|
31
|
+
},
|
|
32
|
+
series: chart_data,
|
|
33
|
+
title: {
|
|
34
|
+
text: "Percentage Height (50%)",
|
|
35
|
+
},
|
|
36
|
+
xAxis: {
|
|
37
|
+
categories: ["Jan", "Feb", "Mar", "Apr", "May"],
|
|
38
|
+
},
|
|
39
|
+
yAxis: {
|
|
40
|
+
title: {
|
|
41
|
+
text: "Number of Employees",
|
|
42
|
+
},
|
|
43
|
+
}
|
|
44
|
+
} %>
|
|
45
|
+
|
|
46
|
+
<%= pb_rails("pb_bar_graph", props: {options: chart_options_percentage}) %>
|