playbook_ui 15.0.0.pre.alpha.PLAY2420atfirstcolumnborderfix10439 → 15.0.0.pre.alpha.PLAY2420atfirstcolumnborderfix10590
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/_advanced_table.scss +7 -9
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.jsx +1 -1
- data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +0 -1
- 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_date_picker/_date_picker.tsx +6 -4
- 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_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_nav/_item.tsx +19 -5
- data/app/pb_kits/playbook/pb_nav/item.html.erb +6 -2
- 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/dist/chunks/{_line_graph-B-n_nsLR.js → _line_graph-CUfJ7E4h.js} +1 -1
- data/dist/chunks/{_typeahead-CS9PvM1x.js → _typeahead-DCp1lVJx.js} +2 -2
- data/dist/chunks/{_weekday_stacked-DaFBilv5.js → _weekday_stacked-YwRTPuBs.js} +3 -3
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +15 -1
- 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/forms/builder/form_field_builder.rb +37 -2
- data/lib/playbook/version.rb +1 -1
- metadata +70 -5
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 66f52aebecd920bc2fc041ba37d6376aba5251a0497fc8cc90f6fbbb2fd07760
         | 
| 4 | 
            +
              data.tar.gz: 31c062066ff39067c6146114516d7eddf467b7fd117d3e50e7d15c384331a874
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: dab996205feaa0e09754fce0063352da29b6826b7e07d0a6c417b35bffc0fc8f290116abefd81bc08bc080c91b9f87ad4320038397e72aca84a1f4b5ef1c5362
         | 
| 7 | 
            +
              data.tar.gz: 66259cb940c24039f1cd65123a9aa16e6c9298061198f22d81a352d832c3248cecb274d1802753be28d57ae8b94268b6cef6422a320f1cddcced479f04f7af6a
         | 
| @@ -1,5 +1,6 @@ | |
| 1 1 |  | 
| 2 2 |  | 
| 3 | 
            +
             | 
| 3 4 | 
             
            @import 'pb_advanced_table/advanced_table';
         | 
| 4 5 | 
             
            @import 'pb_avatar/avatar';
         | 
| 5 6 | 
             
            @import 'pb_background/background';
         | 
| @@ -108,6 +109,8 @@ | |
| 108 109 | 
             
            @import 'pb_user_badge/user_badge';
         | 
| 109 110 | 
             
            @import 'pb_weekday_stacked/weekday_stacked';
         | 
| 110 111 | 
             
            @import 'pb_empty_state/empty_state';
         | 
| 112 | 
            +
            @import 'pb_pb_bar_graph/pb_bar_graph';
         | 
| 113 | 
            +
            @import 'pb_pb_circle_chart/pb_circle_chart';
         | 
| 111 114 | 
             
            @import 'utilities/mixins';
         | 
| 112 115 | 
             
            @import 'utilities/spacing';
         | 
| 113 116 | 
             
            @import 'utilities/cursor';
         | 
| @@ -1042,23 +1042,21 @@ | |
| 1042 1042 | 
             
                &.dark {
         | 
| 1043 1043 | 
             
                  .pb_advanced_table_body .last-cell:not(:last-child),
         | 
| 1044 1044 | 
             
                  .pb_advanced_table_header .last-header-cell:not(:last-child) {
         | 
| 1045 | 
            -
                    box-shadow: none !important;
         | 
| 1046 1045 | 
             
                    border-right: 1px solid $border_dark !important;
         | 
| 1047 1046 | 
             
                  }
         | 
| 1048 1047 | 
             
                }
         | 
| 1048 | 
            +
              }
         | 
| 1049 1049 |  | 
| 1050 | 
            -
             | 
| 1051 | 
            -
             | 
| 1052 | 
            -
             | 
| 1053 | 
            -
             | 
| 1054 | 
            -
             | 
| 1055 | 
            -
                    border-right: 1px solid var(--column-border-color) !important;
         | 
| 1056 | 
            -
                  }
         | 
| 1050 | 
            +
              // Support column group border colors
         | 
| 1051 | 
            +
              &.pb_advanced_table[class*="column-group-border-"] {
         | 
| 1052 | 
            +
                .pb_advanced_table_body .last-cell:not(:last-child),
         | 
| 1053 | 
            +
                .pb_advanced_table_header .last-header-cell:not(:last-child) {
         | 
| 1054 | 
            +
                  border-right: 1px solid var(--column-border-color) !important;
         | 
| 1057 1055 | 
             
                }
         | 
| 1058 1056 | 
             
              }
         | 
| 1059 1057 | 
             
            }
         | 
| 1060 1058 |  | 
| 1061 | 
            -
            // | 
| 1059 | 
            +
            // Removes bottom borders when wrapped inside the Card Kit (keep existing behavior)
         | 
| 1062 1060 | 
             
            .pb_card_kit > .pb_advanced_table tr:last-child,
         | 
| 1063 1061 | 
             
            .pb_card_kit > .pb_advanced_table .last-row-cell {
         | 
| 1064 1062 | 
             
              td {
         | 
    
        data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.jsx
    CHANGED
    
    | @@ -47,7 +47,6 @@ const AdvancedTableColumnHeadersVerticalBorder = (props) => { | |
| 47 47 | 
             
              ];
         | 
| 48 48 |  | 
| 49 49 | 
             
              const tableProps = {
         | 
| 50 | 
            -
                container: false,
         | 
| 51 50 | 
             
                verticalBorder: true
         | 
| 52 51 | 
             
              }
         | 
| 53 52 | 
             
            // Adjusted for testing purposes. Will revert prior to commit.
         | 
| @@ -56,6 +55,7 @@ const AdvancedTableColumnHeadersVerticalBorder = (props) => { | |
| 56 55 | 
             
                  <Card>
         | 
| 57 56 | 
             
                    <AdvancedTable
         | 
| 58 57 | 
             
                        columnDefinitions={columnDefinitions}
         | 
| 58 | 
            +
                        columnGroupBorderColor="text_lt_default"
         | 
| 59 59 | 
             
                        tableData={MOCK_DATA}
         | 
| 60 60 | 
             
                        tableProps={tableProps}
         | 
| 61 61 | 
             
                        {...props}
         | 
| @@ -4,7 +4,6 @@ examples: | |
| 4 4 | 
             
              - bar_graph_default: Default
         | 
| 5 5 | 
             
              - bar_graph_legend: Legend
         | 
| 6 6 | 
             
              - bar_graph_legend_position: Legend Position
         | 
| 7 | 
            -
              - bar_graph_legend_non_clickable: Legend Non Clickable
         | 
| 8 7 | 
             
              - bar_graph_height: Height
         | 
| 9 8 | 
             
              - bar_graph_spline: Spline
         | 
| 10 9 | 
             
              - bar_graph_colors: Color Overrides
         | 
| @@ -20,7 +20,7 @@ | |
| 20 20 | 
             
            // Dark mode
         | 
| 21 21 | 
             
            .pb_card_kit.dark {
         | 
| 22 22 | 
             
              @include pb_card_dark;
         | 
| 23 | 
            -
             | 
| 23 | 
            +
             | 
| 24 24 | 
             
              &.pb_card_kit_selected {
         | 
| 25 25 | 
             
                @include pb_card_selected_dark;
         | 
| 26 26 | 
             
              }
         | 
| @@ -33,7 +33,8 @@ | |
| 33 33 |  | 
| 34 34 | 
             
            // Highlight styles
         | 
| 35 35 | 
             
            .pb_card_kit_highlight_top,
         | 
| 36 | 
            -
            .pb_card_kit_highlight_side | 
| 36 | 
            +
            .pb_card_kit_highlight_side,
         | 
| 37 | 
            +
            .pb_card_kit_highlight_right_side {
         | 
| 37 38 | 
             
              overflow: hidden;
         | 
| 38 39 | 
             
            }
         | 
| 39 40 |  | 
| @@ -52,13 +53,20 @@ | |
| 52 53 | 
             
              }
         | 
| 53 54 | 
             
            }
         | 
| 54 55 |  | 
| 55 | 
            -
            // Highlight side variants | 
| 56 | 
            +
            // Highlight side variants
         | 
| 56 57 | 
             
            @each $color_name, $color_value in $pb_card_highlight_colors {
         | 
| 57 58 | 
             
              .pb_card_kit_highlight_side.pb_card_kit_highlight_#{$color_name}::before {
         | 
| 58 59 | 
             
                @include pb_card_highlight($pb_card_highlight_size, 100%, $color_value);
         | 
| 59 60 | 
             
              }
         | 
| 60 61 | 
             
            }
         | 
| 61 62 |  | 
| 63 | 
            +
            // Highlight side right variants
         | 
| 64 | 
            +
            @each $color_name, $color_value in $pb_card_highlight_colors {
         | 
| 65 | 
            +
              .pb_card_kit_highlight_right_side.pb_card_kit_highlight_#{$color_name}::before {
         | 
| 66 | 
            +
                @include pb_card_right_highlight($pb_card_highlight_size, 100%, $color_value);
         | 
| 67 | 
            +
              }
         | 
| 68 | 
            +
            }
         | 
| 69 | 
            +
             | 
| 62 70 | 
             
            // Card Header
         | 
| 63 71 | 
             
            .pb_card_header_kit {
         | 
| 64 72 | 
             
              flex-grow: 0;
         | 
| @@ -68,7 +76,7 @@ | |
| 68 76 | 
             
              padding: $space_sm;
         | 
| 69 77 | 
             
              border: 0;
         | 
| 70 78 | 
             
              border-radius: $pb_card_header_border_radius $pb_card_header_border_radius 0px 0px;
         | 
| 71 | 
            -
             | 
| 79 | 
            +
             | 
| 72 80 | 
             
              // Inherit border radius from parent card
         | 
| 73 81 | 
             
              .pb_card_kit_border_radius_xs & {
         | 
| 74 82 | 
             
                border-radius: $border_radius_xs $border_radius_xs 0px 0px;
         | 
| @@ -26,7 +26,7 @@ type CardPropTypes = { | |
| 26 26 | 
             
              dragHandle?: boolean,
         | 
| 27 27 | 
             
              htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
         | 
| 28 28 | 
             
              highlight?: {
         | 
| 29 | 
            -
                position?: "side" | "top",
         | 
| 29 | 
            +
                position?: "side" | "right_side" | "top",
         | 
| 30 30 | 
             
                color?: string,
         | 
| 31 31 | 
             
              },
         | 
| 32 32 | 
             
              id?: string,
         | 
| @@ -56,7 +56,7 @@ const Header = (props: CardHeaderProps) => { | |
| 56 56 | 
             
              const { children, className, headerColor = 'category_1', headerColorStriped = false } = props
         | 
| 57 57 | 
             
              const headerColorCSS = `pb_card_header_kit_${headerColor}`
         | 
| 58 58 | 
             
              const headerStripedCSS = headerColorStriped ? `pb_card_header_kit_${headerColor}_striped` : ''
         | 
| 59 | 
            -
             | 
| 59 | 
            +
             | 
| 60 60 | 
             
              const headerCSS = classnames(
         | 
| 61 61 | 
             
                'pb_card_header_kit',
         | 
| 62 62 | 
             
                headerColorCSS,
         | 
| @@ -108,7 +108,7 @@ const Card = (props: CardPropTypes): React.ReactElement => { | |
| 108 108 | 
             
              const borderRadiusCSS = borderRadius !== 'md' ? `pb_card_kit_border_radius_${borderRadius}` : ''
         | 
| 109 109 | 
             
              const highlightPositionCSS = highlight.position ? `pb_card_kit_highlight_${highlight.position}` : ''
         | 
| 110 110 | 
             
              const highlightColorCSS = highlight.color ? `pb_card_kit_highlight_${highlight.color}` : ''
         | 
| 111 | 
            -
             | 
| 111 | 
            +
             | 
| 112 112 | 
             
              const cardCss = classnames(
         | 
| 113 113 | 
             
                'pb_card_kit', // Base class
         | 
| 114 114 | 
             
                selectedCSS,
         | 
| @@ -87,6 +87,16 @@ $pb_card_header_colors: map-merge(map-merge(map-merge($product_colors, $addition | |
| 87 87 | 
             
              background: $background;
         | 
| 88 88 | 
             
            }
         | 
| 89 89 |  | 
| 90 | 
            +
            @mixin pb_card_right_highlight($width, $height, $background){
         | 
| 91 | 
            +
              content: "";
         | 
| 92 | 
            +
              position: absolute;
         | 
| 93 | 
            +
              top: 0;
         | 
| 94 | 
            +
              right: 0;
         | 
| 95 | 
            +
              width: $width;
         | 
| 96 | 
            +
              height: $height;
         | 
| 97 | 
            +
              background: $background;
         | 
| 98 | 
            +
            }
         | 
| 99 | 
            +
             | 
| 90 100 | 
             
            @mixin pb_card_header_color($header_color) {
         | 
| 91 101 | 
             
              background: $header_color;
         | 
| 92 102 | 
             
            }
         | 
| @@ -4,6 +4,9 @@ | |
| 4 4 | 
             
            <%= pb_rails("card", props: {highlight: {position: "top", color:"warning"}, margin_bottom: "sm"}) do %>
         | 
| 5 5 | 
             
              Top Position & Warning Color
         | 
| 6 6 | 
             
            <% end %>
         | 
| 7 | 
            +
            <%= pb_rails("card", props: {highlight: {position: "right_side", color:"product_5_highlight"}, margin_bottom: "sm"}) do %>
         | 
| 8 | 
            +
              Right Side Position & Product 5 Highlight Color
         | 
| 9 | 
            +
            <% end %>
         | 
| 7 10 | 
             
            <%= pb_rails("card", props: {highlight: {position: "side", color:"category_2"}, margin_bottom: "sm"}) do %>
         | 
| 8 11 | 
             
              Side Position & Category 2 Color
         | 
| 9 12 | 
             
            <% end %>
         | 
| @@ -21,6 +21,14 @@ const CardHighlight = (props) => { | |
| 21 21 | 
             
                    {'Top Position & Warning Color'}
         | 
| 22 22 | 
             
                  </Card>
         | 
| 23 23 |  | 
| 24 | 
            +
                  <Card
         | 
| 25 | 
            +
                      {...props}
         | 
| 26 | 
            +
                      highlight={{ position: 'right_side', color: 'product_5_highlight' }}
         | 
| 27 | 
            +
                      marginBottom="sm"
         | 
| 28 | 
            +
                  >
         | 
| 29 | 
            +
                    {'Right Side Position & Product 5 Highlight Color'}
         | 
| 30 | 
            +
                  </Card>
         | 
| 31 | 
            +
             | 
| 24 32 | 
             
                  <Card
         | 
| 25 33 | 
             
                      {...props}
         | 
| 26 34 | 
             
                      highlight={{ position: 'side', color: 'category_2' }}
         | 
| @@ -210,10 +210,12 @@ const DatePicker = (props: DatePickerProps): React.ReactElement => { | |
| 210 210 | 
             
                      className="input_wrapper"
         | 
| 211 211 | 
             
                  >
         | 
| 212 212 |  | 
| 213 | 
            -
                     | 
| 214 | 
            -
             | 
| 215 | 
            -
             | 
| 216 | 
            -
             | 
| 213 | 
            +
                    {!hideLabel && (
         | 
| 214 | 
            +
                      <Caption
         | 
| 215 | 
            +
                          className="pb_date_picker_kit_label"
         | 
| 216 | 
            +
                          text={label}
         | 
| 217 | 
            +
                      />
         | 
| 218 | 
            +
                    )}
         | 
| 217 219 | 
             
                      <>
         | 
| 218 220 | 
             
                        <div className="date_picker_input_wrapper">
         | 
| 219 221 | 
             
                          <input
         | 
| @@ -35,6 +35,7 @@ type FixedConfirmationToastProps = { | |
| 35 35 |  | 
| 36 36 | 
             
            const FixedConfirmationToast = (props: FixedConfirmationToastProps): React.ReactElement => {
         | 
| 37 37 | 
             
              const [showToast, toggleToast] = useState(true);
         | 
| 38 | 
            +
             | 
| 38 39 | 
             
              const {
         | 
| 39 40 | 
             
                autoClose = 0,
         | 
| 40 41 | 
             
                children,
         | 
| @@ -87,8 +88,15 @@ const FixedConfirmationToast = (props: FixedConfirmationToastProps): React.React | |
| 87 88 | 
             
                <>
         | 
| 88 89 | 
             
                  {showToast && (
         | 
| 89 90 | 
             
                    <div
         | 
| 91 | 
            +
                        aria-atomic="true"
         | 
| 92 | 
            +
                        aria-live="polite"
         | 
| 90 93 | 
             
                        className={css}
         | 
| 91 94 | 
             
                        onClick={handleClick}
         | 
| 95 | 
            +
                        onKeyDown={(e) => {
         | 
| 96 | 
            +
                          if (e.key === "Enter" || e.key === " ") handleClick();
         | 
| 97 | 
            +
                        }}
         | 
| 98 | 
            +
                        role="status"
         | 
| 99 | 
            +
                        tabIndex={0}
         | 
| 92 100 | 
             
                        {...htmlProps}
         | 
| 93 101 | 
             
                    >
         | 
| 94 102 | 
             
                      {returnedIcon && icon !== "none" && (
         | 
| @@ -111,6 +119,7 @@ const FixedConfirmationToast = (props: FixedConfirmationToastProps): React.React | |
| 111 119 |  | 
| 112 120 | 
             
                      {closeable && (
         | 
| 113 121 | 
             
                        <Icon
         | 
| 122 | 
            +
                            aria={{ "label": "Close Toast" }}
         | 
| 114 123 | 
             
                            className="pb_icon"
         | 
| 115 124 | 
             
                            cursor="pointer"
         | 
| 116 125 | 
             
                            fixedWidth={false}
         | 
| @@ -1,6 +1,6 @@ | |
| 1 | 
            -
            <%= pb_content_tag do %>
         | 
| 1 | 
            +
            <%= pb_content_tag(:div, "aria-atomic": "true", "aria-live": "polite", role: "status", tabindex: 0, onkeydown: "if(event.key==='Enter'||event.key===' '){ this.remove(); }" ) do %>
         | 
| 2 2 | 
             
                <% if object.icon_value && object.icon_value != "none" %>
         | 
| 3 | 
            -
                <%= pb_rails("icon", props: { icon: object.icon_value, classname: "pb_icon", fixed_width: true }) %>
         | 
| 3 | 
            +
                <%= pb_rails("icon", props: { icon: object.icon_value, classname: "pb_icon", fixed_width: true, aria: { "aria-label": "#{object.icon_value} icon" } }) %>
         | 
| 4 4 | 
             
                <% end %>
         | 
| 5 5 | 
             
                <% if content %>
         | 
| 6 6 | 
             
                    <%= content %>
         | 
| @@ -8,5 +8,5 @@ | |
| 8 8 | 
             
                    <%= pb_rails("title", props: { text: object.text, size: 4, flex: "1", classname: "pb_fixed_confirmation_toast_text" }) %>
         | 
| 9 9 | 
             
                <% end %>
         | 
| 10 10 |  | 
| 11 | 
            -
                <%= pb_rails("icon", props: { icon: "times", classname: "pb_icon", cursor: "pointer", fixed_width: true }) if object.closeable %>
         | 
| 11 | 
            +
                <%= pb_rails("icon", props: { icon: "times", classname: "pb_icon", cursor: "pointer", fixed_width: true, aria: { "aria-label": "Close Toast" } }) if object.closeable %>
         | 
| 12 12 | 
             
            <% end %>
         | 
| @@ -91,6 +91,7 @@ | |
| 91 91 | 
             
            <%= pb_form_with(scope: :example, url: "", method: :get) do |form| %>
         | 
| 92 92 | 
             
              <%= form.typeahead :example_typeahead, props: { data: { typeahead_example1: true, user: {} }, label: true, placeholder: "Search for a user" } %>
         | 
| 93 93 | 
             
              <%= form.text_field :example_text_field, props: { label: true } %>
         | 
| 94 | 
            +
              <%= form.text_field :example_text_field_2, props: { label: "Text Field Custom Label" } %>
         | 
| 94 95 | 
             
              <%= form.phone_number_field :example_phone_number_field, props: { label: "Example phone field", hidden_inputs: true } %>
         | 
| 95 96 | 
             
              <%= form.email_field :example_email_field, props: { label: true } %>
         | 
| 96 97 | 
             
              <%= form.number_field :example_number_field, props: { label: true } %>
         | 
| @@ -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"
         | 
| @@ -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" }) %>
         | 
| 
            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
         |