playbook_ui 15.0.0.pre.alpha.PLAY2419dialogaccessibility10324 → 15.0.0.pre.alpha.play2377bargraphscaffoldnewkit10325
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 +1 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +0 -1
- data/app/pb_kits/playbook/pb_dialog/_close_icon.tsx +1 -5
- data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +1 -1
- 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_icon/_icon.tsx +2 -13
- data/app/pb_kits/playbook/pb_icon/icon.rb +1 -9
- data/app/pb_kits/playbook/pb_icon_circle/icon_circle.html.erb +1 -1
- 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/dist/chunks/{_line_graph-pjRvO-Xb.js → _line_graph-BNXbOd7G.js} +1 -1
- data/dist/chunks/_typeahead-_OUsjdM2.js +6 -0
- data/dist/chunks/{_weekday_stacked-CXuGHKcc.js → _weekday_stacked-B3B3vRAT.js} +2 -2
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +9 -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/lib/playbook/version.rb +1 -1
- metadata +37 -4
- data/dist/chunks/_typeahead-CZo22jaG.js +0 -6
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f8b1bddf303fedf0043484da185c999029dbbc31a511defaa20293306b580259
         | 
| 4 | 
            +
              data.tar.gz: a82b724c5fc2f7556723c96b8d857d77d12dc51e6589db0d540a7412834c119c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6ebff23c127fcecdcb09ec4e45b8be2b30fcd20c891c2e158c958e7d2a7a10b721c3629ae24f163d9d39ac615d53306bea9ff39662677bf1ef6f3dc298c3487c
         | 
| 7 | 
            +
              data.tar.gz: c34ab20b9bbe0df466972aa117ac7664d76f613387119ea0e224ea6a2ef00b96d6dd8ba83cc246f582a5cd828211f63bf3a4391bb978cd30e66329cf31b5e8be
         | 
| @@ -108,6 +108,7 @@ | |
| 108 108 | 
             
            @import 'pb_user_badge/user_badge';
         | 
| 109 109 | 
             
            @import 'pb_weekday_stacked/weekday_stacked';
         | 
| 110 110 | 
             
            @import 'pb_empty_state/empty_state';
         | 
| 111 | 
            +
            @import 'pb_pb_bar_graph/pb_bar_graph';
         | 
| 111 112 | 
             
            @import 'utilities/mixins';
         | 
| 112 113 | 
             
            @import 'utilities/spacing';
         | 
| 113 114 | 
             
            @import 'utilities/cursor';
         | 
| @@ -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
         | 
| @@ -12,14 +12,10 @@ export const CloseIcon = (props: CloseIconProps): React.ReactElement => { | |
| 12 12 | 
             
              const timesIcon = getAllIcons()["times"]
         | 
| 13 13 | 
             
              return (
         | 
| 14 14 | 
             
                <div
         | 
| 15 | 
            -
                    aria-label="Close Dialog"
         | 
| 16 15 | 
             
                    className="pb_dialog_close_icon"
         | 
| 17 | 
            -
                    onClick={onClose} | 
| 18 | 
            -
                    role="button"    
         | 
| 19 | 
            -
                    tabIndex={0}
         | 
| 16 | 
            +
                    onClick={onClose}
         | 
| 20 17 | 
             
                >
         | 
| 21 18 | 
             
                  <Icon
         | 
| 22 | 
            -
                      aria={{ "hidden": true }} 
         | 
| 23 19 | 
             
                      className="svg-inline--fa"
         | 
| 24 20 | 
             
                      customIcon={timesIcon.icon as unknown as { [key: string]: SVGElement }}
         | 
| 25 21 | 
             
                      fixedWidth
         | 
| @@ -179,7 +179,7 @@ const Dialog = (props: DialogProps): React.ReactElement => { | |
| 179 179 | 
             
                        ariaHideApp={false}
         | 
| 180 180 | 
             
                        className={dialogClassNames}
         | 
| 181 181 | 
             
                        closeTimeoutMS={200}
         | 
| 182 | 
            -
                        contentLabel=" | 
| 182 | 
            +
                        contentLabel="Minimal Modal Example"
         | 
| 183 183 | 
             
                        id={id}
         | 
| 184 184 | 
             
                        isOpen={modalIsOpened}
         | 
| 185 185 | 
             
                        onRequestClose={onClose}
         | 
| @@ -12,7 +12,7 @@ | |
| 12 12 | 
             
                    data-cancel-button-id="<%= object.cancel_button_id %>"
         | 
| 13 13 | 
             
                <% end %>
         | 
| 14 14 | 
             
            >
         | 
| 15 | 
            -
                <%= pb_content_tag(:dialog | 
| 15 | 
            +
                <%= pb_content_tag(:dialog) do %>
         | 
| 16 16 | 
             
                        <% if object.status === "" && object.title %>
         | 
| 17 17 | 
             
                            <%= pb_rails("dialog/dialog_header", props: { title: object.title, id: object.id }) %>
         | 
| 18 18 | 
             
                        <% end %>
         | 
| @@ -2,8 +2,8 @@ | |
| 2 2 | 
             
                    <%= pb_rails("flex", props: {classname:object.classname, spacing:"between", padding:"sm", align:"center"}) do %>
         | 
| 3 3 | 
             
                        <%= content.presence || object.title %>
         | 
| 4 4 |  | 
| 5 | 
            -
                        <button class="dialog-button-class pb_dialog_close_icon" type="button" data-close-dialog= <%= object.id %>  | 
| 6 | 
            -
                            <%= pb_rails("icon", props: { custom_icon: Playbook::Engine::root.join(times_icon) | 
| 5 | 
            +
                        <button class="dialog-button-class pb_dialog_close_icon" type="button" data-close-dialog= <%= object.id %> >
         | 
| 6 | 
            +
                            <%= pb_rails("icon", props: { custom_icon: Playbook::Engine::root.join(times_icon) }) %>
         | 
| 7 7 | 
             
                        </button>
         | 
| 8 8 | 
             
                    <% end %>
         | 
| 9 9 | 
             
                    <%= pb_rails("section_separator") %>
         | 
| @@ -20,7 +20,7 @@ export type IconSizes = "lg" | |
| 20 20 | 
             
            | ""
         | 
| 21 21 |  | 
| 22 22 | 
             
            type IconProps = {
         | 
| 23 | 
            -
              aria?: { | 
| 23 | 
            +
              aria?: {[key: string]: string},
         | 
| 24 24 | 
             
              border?: string,
         | 
| 25 25 | 
             
              className?: string,
         | 
| 26 26 | 
             
              color?: string,
         | 
| @@ -211,15 +211,7 @@ const Icon = (props: IconProps) => { | |
| 211 211 | 
             
              )
         | 
| 212 212 |  | 
| 213 213 | 
             
              aria.label ? null : aria.label = `${icon} icon`
         | 
| 214 | 
            -
             | 
| 215 | 
            -
              const normalizedAria: { [key: string]: string } = Object.fromEntries(
         | 
| 216 | 
            -
                Object.entries(aria).map(([key, value]) => [
         | 
| 217 | 
            -
                  key,
         | 
| 218 | 
            -
                  typeof value === "boolean" ? String(value) : value,
         | 
| 219 | 
            -
                ])
         | 
| 220 | 
            -
              )
         | 
| 221 | 
            -
              
         | 
| 222 | 
            -
              const ariaProps = buildAriaProps(normalizedAria)
         | 
| 214 | 
            +
              const ariaProps: {[key: string]: any} = buildAriaProps(aria)
         | 
| 223 215 | 
             
              const dataProps: {[key: string]: any} = buildDataProps(data)
         | 
| 224 216 | 
             
              const htmlProps = buildHtmlProps(htmlOptions)
         | 
| 225 217 |  | 
| @@ -230,7 +222,6 @@ const Icon = (props: IconProps) => { | |
| 230 222 | 
             
                    <>
         | 
| 231 223 | 
             
                      {
         | 
| 232 224 | 
             
                        React.cloneElement(iconElement || customIcon, {
         | 
| 233 | 
            -
                          ...ariaProps,
         | 
| 234 225 | 
             
                          ...dataProps,
         | 
| 235 226 | 
             
                          ...htmlProps,
         | 
| 236 227 | 
             
                          className: classes,
         | 
| @@ -246,7 +237,6 @@ const Icon = (props: IconProps) => { | |
| 246 237 | 
             
                  return (
         | 
| 247 238 | 
             
                    <>
         | 
| 248 239 | 
             
                      <span
         | 
| 249 | 
            -
                          {...ariaProps}
         | 
| 250 240 | 
             
                          {...dataProps}
         | 
| 251 241 | 
             
                          {...htmlProps}
         | 
| 252 242 | 
             
                          className={classesEmoji}
         | 
| @@ -260,7 +250,6 @@ const Icon = (props: IconProps) => { | |
| 260 250 | 
             
                  return (
         | 
| 261 251 | 
             
                    <>
         | 
| 262 252 | 
             
                      <i
         | 
| 263 | 
            -
                          {...ariaProps}
         | 
| 264 253 | 
             
                          {...dataProps}
         | 
| 265 254 | 
             
                          {...htmlProps}
         | 
| 266 255 | 
             
                          className={classes}
         | 
| @@ -110,20 +110,12 @@ module Playbook | |
| 110 110 | 
             
                    svg["class"] = %w[pb_custom_icon svg-inline--fa].concat([object.custom_icon_classname]).join(" ")
         | 
| 111 111 | 
             
                    svg["id"] = object.id
         | 
| 112 112 | 
             
                    svg["data"] = object.data
         | 
| 113 | 
            +
                    svg["aria"] = object.aria
         | 
| 113 114 | 
             
                    svg["height"] = "auto"
         | 
| 114 115 | 
             
                    svg["width"] = "auto"
         | 
| 115 116 | 
             
                    svg["tabindex"] = object.tabindex
         | 
| 116 117 | 
             
                    fill_color = object.color || "currentColor"
         | 
| 117 118 | 
             
                    doc.at_css("path")["fill"] = fill_color
         | 
| 118 | 
            -
             | 
| 119 | 
            -
                    if object.aria.present?
         | 
| 120 | 
            -
                      object.aria.each do |key, value|
         | 
| 121 | 
            -
                        k = key.to_s
         | 
| 122 | 
            -
                        attr = k.start_with?("aria-") ? k : "aria-#{k.tr('_', '-')}"
         | 
| 123 | 
            -
                        svg[attr] = value
         | 
| 124 | 
            -
                      end
         | 
| 125 | 
            -
                    end
         | 
| 126 | 
            -
             | 
| 127 119 | 
             
                    raw doc
         | 
| 128 120 | 
             
                  rescue OpenURI::HTTPError, StandardError
         | 
| 129 121 | 
             
                    # Handle any exceptions and return an empty string
         | 
| 
            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}) %>
         | 
| @@ -0,0 +1,62 @@ | |
| 1 | 
            +
            import React from 'react'
         | 
| 2 | 
            +
            import { PbBarGraph } from 'playbook-ui'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            const chartData = [{
         | 
| 5 | 
            +
              name: 'Number of Installations',
         | 
| 6 | 
            +
              data: [1475, 200, 3000, 654, 656],
         | 
| 7 | 
            +
            }]
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            const pixelHeightChartOptions = {
         | 
| 10 | 
            +
              chart: {
         | 
| 11 | 
            +
                height: "300"
         | 
| 12 | 
            +
              },
         | 
| 13 | 
            +
              series: chartData,
         | 
| 14 | 
            +
              title: {
         | 
| 15 | 
            +
                text: "Fixed Height (300px)",
         | 
| 16 | 
            +
              },
         | 
| 17 | 
            +
              xAxis: {
         | 
| 18 | 
            +
                categories: ["Jan", "Feb", "Mar", "Apr", "May"],
         | 
| 19 | 
            +
              },
         | 
| 20 | 
            +
              yAxis: {
         | 
| 21 | 
            +
                title: {
         | 
| 22 | 
            +
                  text: "Number of Employees",
         | 
| 23 | 
            +
                },
         | 
| 24 | 
            +
              },
         | 
| 25 | 
            +
            };
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            const percentageHeightChartOptions = {
         | 
| 28 | 
            +
              chart: {
         | 
| 29 | 
            +
                height: "50%"
         | 
| 30 | 
            +
              },
         | 
| 31 | 
            +
              series: chartData,
         | 
| 32 | 
            +
              title: {
         | 
| 33 | 
            +
                text: "Percentage Height (50%)",
         | 
| 34 | 
            +
              },
         | 
| 35 | 
            +
              xAxis: {
         | 
| 36 | 
            +
                categories: ["Jan", "Feb", "Mar", "Apr", "May"],
         | 
| 37 | 
            +
              },
         | 
| 38 | 
            +
              yAxis: {
         | 
| 39 | 
            +
                title: {
         | 
| 40 | 
            +
                  text: "Number of Employees",
         | 
| 41 | 
            +
                },
         | 
| 42 | 
            +
              },
         | 
| 43 | 
            +
            };
         | 
| 44 | 
            +
             | 
| 45 | 
            +
             | 
| 46 | 
            +
             | 
| 47 | 
            +
            const PbBarGraphHeight = () => (
         | 
| 48 | 
            +
              <div>
         | 
| 49 | 
            +
                  <PbBarGraph
         | 
| 50 | 
            +
                      options={pixelHeightChartOptions}
         | 
| 51 | 
            +
                  />
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                <br />
         | 
| 54 | 
            +
                <br />
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                <PbBarGraph
         | 
| 57 | 
            +
                    options={percentageHeightChartOptions}
         | 
| 58 | 
            +
                />
         | 
| 59 | 
            +
              </div>
         | 
| 60 | 
            +
            )
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            export default PbBarGraphHeight
         | 
| @@ -0,0 +1,3 @@ | |
| 1 | 
            +
            By default, Highcharts have a height of 400px, but this can be customized. You can override the default by specifying either a percentage or a fixed pixel value.
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Using a percentage maintains a consistent aspect ratio across different responsive sizes. For example, setting the height to 50% makes the chart’s height half of its width.
         | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            <% chart_options = {
         | 
| 2 | 
            +
                chart: {
         | 
| 3 | 
            +
                    type: 'bar'
         | 
| 4 | 
            +
                },
         | 
| 5 | 
            +
                title: {
         | 
| 6 | 
            +
                    text: 'Historic World Population by Region',
         | 
| 7 | 
            +
                    align: 'left'
         | 
| 8 | 
            +
                },
         | 
| 9 | 
            +
                subtitle: {
         | 
| 10 | 
            +
                    text: 'Source: <a ' +
         | 
| 11 | 
            +
                        'href="https://en.wikipedia.org/wiki/List_of_continents_and_continental_subregions_by_population"' +
         | 
| 12 | 
            +
                        'target="_blank">Wikipedia.org</a>',
         | 
| 13 | 
            +
                    align: 'left'
         | 
| 14 | 
            +
                },
         | 
| 15 | 
            +
                xAxis: {
         | 
| 16 | 
            +
                    categories: ['Africa', 'America', 'Asia', 'Europe'],
         | 
| 17 | 
            +
                    lineWidth: 0
         | 
| 18 | 
            +
                },
         | 
| 19 | 
            +
                yAxis: {
         | 
| 20 | 
            +
                    title: {
         | 
| 21 | 
            +
                        text: '',
         | 
| 22 | 
            +
                    },
         | 
| 23 | 
            +
                },
         | 
| 24 | 
            +
                tooltip: {
         | 
| 25 | 
            +
                    valueSuffix: ' millions'
         | 
| 26 | 
            +
                },
         | 
| 27 | 
            +
                plotOptions: {
         | 
| 28 | 
            +
                    bar: {
         | 
| 29 | 
            +
                        dataLabels: {
         | 
| 30 | 
            +
                            enabled: true
         | 
| 31 | 
            +
                        },
         | 
| 32 | 
            +
                        groupPadding: 0.1
         | 
| 33 | 
            +
                    }
         | 
| 34 | 
            +
                },
         | 
| 35 | 
            +
                series: [{
         | 
| 36 | 
            +
                    name: 'Year 1990',
         | 
| 37 | 
            +
                    data: [631, 727, 3202, 721]
         | 
| 38 | 
            +
                }, {
         | 
| 39 | 
            +
                    name: 'Year 2000',
         | 
| 40 | 
            +
                    data: [814, 841, 3714, 726]
         | 
| 41 | 
            +
                }, {
         | 
| 42 | 
            +
                    name: 'Year 2018',
         | 
| 43 | 
            +
                    data: [1276, 1007, 4561, 746]
         | 
| 44 | 
            +
                }],
         | 
| 45 | 
            +
            } %>
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            <%= pb_rails("pb_bar_graph", props: {options: chart_options}) %>
         | 
| @@ -0,0 +1,60 @@ | |
| 1 | 
            +
            import React from 'react'
         | 
| 2 | 
            +
            import { PbBarGraph } from 'playbook-ui'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
             | 
| 5 | 
            +
            const chartOptions = {
         | 
| 6 | 
            +
                chart: {
         | 
| 7 | 
            +
                    type: 'bar'
         | 
| 8 | 
            +
                },
         | 
| 9 | 
            +
                title: {
         | 
| 10 | 
            +
                    text: 'Historic World Population by Region',
         | 
| 11 | 
            +
                    align: 'left'
         | 
| 12 | 
            +
                },
         | 
| 13 | 
            +
                subtitle: {
         | 
| 14 | 
            +
                    text: 'Source: <a ' +
         | 
| 15 | 
            +
                        'href="https://en.wikipedia.org/wiki/List_of_continents_and_continental_subregions_by_population"' +
         | 
| 16 | 
            +
                        'target="_blank">Wikipedia.org</a>',
         | 
| 17 | 
            +
                    align: 'left'
         | 
| 18 | 
            +
                },
         | 
| 19 | 
            +
                xAxis: {
         | 
| 20 | 
            +
                    categories: ['Africa', 'America', 'Asia', 'Europe'],
         | 
| 21 | 
            +
                    lineWidth: 0
         | 
| 22 | 
            +
                },
         | 
| 23 | 
            +
                yAxis: {
         | 
| 24 | 
            +
                    title: {
         | 
| 25 | 
            +
                        text: '',
         | 
| 26 | 
            +
                    },
         | 
| 27 | 
            +
                },
         | 
| 28 | 
            +
                tooltip: {
         | 
| 29 | 
            +
                    valueSuffix: ' millions'
         | 
| 30 | 
            +
                },
         | 
| 31 | 
            +
                plotOptions: {
         | 
| 32 | 
            +
                    bar: {
         | 
| 33 | 
            +
                        dataLabels: {
         | 
| 34 | 
            +
                            enabled: true
         | 
| 35 | 
            +
                        },
         | 
| 36 | 
            +
                        groupPadding: 0.1
         | 
| 37 | 
            +
                    }
         | 
| 38 | 
            +
                },
         | 
| 39 | 
            +
                series: [{
         | 
| 40 | 
            +
                    name: 'Year 1990',
         | 
| 41 | 
            +
                    data: [631, 727, 3202, 721]
         | 
| 42 | 
            +
                }, {
         | 
| 43 | 
            +
                    name: 'Year 2000',
         | 
| 44 | 
            +
                    data: [814, 841, 3714, 726]
         | 
| 45 | 
            +
                }, {
         | 
| 46 | 
            +
                    name: 'Year 2018',
         | 
| 47 | 
            +
                    data: [1276, 1007, 4561, 746]
         | 
| 48 | 
            +
                }],
         | 
| 49 | 
            +
            }
         | 
| 50 | 
            +
             | 
| 51 | 
            +
             | 
| 52 | 
            +
            const PbBarGraphHorizontal = () => (
         | 
| 53 | 
            +
              <div>
         | 
| 54 | 
            +
                <PbBarGraph
         | 
| 55 | 
            +
                    options={chartOptions}
         | 
| 56 | 
            +
                />
         | 
| 57 | 
            +
              </div>
         | 
| 58 | 
            +
            )
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            export default PbBarGraphHorizontal
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            <% chart_data = [{
         | 
| 2 | 
            +
                name: 'Number of Installations',
         | 
| 3 | 
            +
                data: [1475,200,3000,654,656]
         | 
| 4 | 
            +
            }] %>
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            <% chart_options = {
         | 
| 7 | 
            +
              series: chart_data,
         | 
| 8 | 
            +
              title: {
         | 
| 9 | 
            +
                text: 'Bar Graph with Legend',
         | 
| 10 | 
            +
              },
         | 
| 11 | 
            +
              xAxis: {
         | 
| 12 | 
            +
                categories: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
         | 
| 13 | 
            +
              },
         | 
| 14 | 
            +
              yAxis: {
         | 
| 15 | 
            +
                title: {
         | 
| 16 | 
            +
                  text: 'Number of Employees',
         | 
| 17 | 
            +
                },
         | 
| 18 | 
            +
              },
         | 
| 19 | 
            +
               legend: {
         | 
| 20 | 
            +
                    enabled: true
         | 
| 21 | 
            +
                },
         | 
| 22 | 
            +
            }
         | 
| 23 | 
            +
            %>
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            <%= pb_rails("pb_bar_graph", props: {options: chart_options}) %>
         |