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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -0
  3. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +0 -1
  4. data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +0 -1
  5. data/app/pb_kits/playbook/pb_dialog/_close_icon.tsx +1 -5
  6. data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +1 -1
  7. data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +1 -1
  8. data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +2 -2
  9. data/app/pb_kits/playbook/pb_icon/_icon.tsx +2 -13
  10. data/app/pb_kits/playbook/pb_icon/icon.rb +1 -9
  11. data/app/pb_kits/playbook/pb_icon_circle/icon_circle.html.erb +1 -1
  12. data/app/pb_kits/playbook/pb_pb_bar_graph/_pb_bar_graph.scss +0 -0
  13. data/app/pb_kits/playbook/pb_pb_bar_graph/_pb_bar_graph.tsx +62 -0
  14. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors.html.erb +35 -0
  15. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors.jsx +49 -0
  16. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors_rails.md +1 -0
  17. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors_react.md +2 -0
  18. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.html.erb +38 -0
  19. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.jsx +51 -0
  20. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.html.erb +46 -0
  21. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.jsx +62 -0
  22. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.md +3 -0
  23. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_horizontal.html.erb +47 -0
  24. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_horizontal.jsx +60 -0
  25. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend.html.erb +25 -0
  26. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend.jsx +36 -0
  27. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_non_clickable.jsx +44 -0
  28. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.html.erb +100 -0
  29. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.jsx +126 -0
  30. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_negative_numbers.html.erb +32 -0
  31. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_negative_numbers.jsx +48 -0
  32. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_secondary_y_axis.html.erb +68 -0
  33. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_secondary_y_axis.jsx +81 -0
  34. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.html.erb +31 -0
  35. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.jsx +42 -0
  36. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.md +2 -0
  37. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_stacked.html.erb +35 -0
  38. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_stacked.jsx +51 -0
  39. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/example.yml +27 -0
  40. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/index.js +11 -0
  41. data/app/pb_kits/playbook/pb_pb_bar_graph/pbBarGraphTheme.ts +106 -0
  42. data/app/pb_kits/playbook/pb_pb_bar_graph/pb_bar_graph.html.erb +1 -0
  43. data/app/pb_kits/playbook/pb_pb_bar_graph/pb_bar_graph.rb +28 -0
  44. data/app/pb_kits/playbook/pb_pb_bar_graph/pbbargraph.test.jsx +31 -0
  45. data/dist/chunks/{_line_graph-pjRvO-Xb.js → _line_graph-BNXbOd7G.js} +1 -1
  46. data/dist/chunks/_typeahead-_OUsjdM2.js +6 -0
  47. data/dist/chunks/{_weekday_stacked-CXuGHKcc.js → _weekday_stacked-B3B3vRAT.js} +2 -2
  48. data/dist/chunks/vendor.js +1 -1
  49. data/dist/menu.yml +9 -1
  50. data/dist/playbook-doc.js +2 -2
  51. data/dist/playbook-rails-react-bindings.js +1 -1
  52. data/dist/playbook-rails.js +1 -1
  53. data/lib/playbook/version.rb +1 -1
  54. metadata +37 -4
  55. data/dist/chunks/_typeahead-CZo22jaG.js +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b736fdc29301940be86911be6313f4f83e0fb0835e760ef594fc254bd780ad17
4
- data.tar.gz: bbe0f550b703262293f0b34a1d643f397261a201d230aa38a72ab5a2c472f6de
3
+ metadata.gz: f8b1bddf303fedf0043484da185c999029dbbc31a511defaa20293306b580259
4
+ data.tar.gz: a82b724c5fc2f7556723c96b8d857d77d12dc51e6589db0d540a7412834c119c
5
5
  SHA512:
6
- metadata.gz: 59beea3d9c03038f41ad82820720e453544a33a7719640f49b681080f051a217acba6d22e780a05ea8c5bcc4fcec3afd7940824f1a0b6d80a7cedb881016abda
7
- data.tar.gz: 72ec7ecf9d41e5bc4038271ee0444388af0122abbb264c169583dff6d2b334f1b0a7220e04324b6e520dee7d057fb6f5d274198787558fef74b2d6272cd9ef7f
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
@@ -28,7 +28,6 @@ exports[`html structure is correct 1`] = `
28
28
  style="vertical-align: middle; color: rgb(193, 205, 214);"
29
29
  >
30
30
  <svg
31
- aria-label="chevron-down icon"
32
31
  class="pb_custom_icon svg-inline--fa svg_lg svg_fw"
33
32
  color="currentColor"
34
33
  fill="none"
@@ -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="Dialog"
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, role: "dialog", "aria-modal": "true", "aria-label": "Dialog") do %>
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 %> aria-label="Close Dialog" >
6
- <%= pb_rails("icon", props: { custom_icon: Playbook::Engine::root.join(times_icon), aria: { hidden: true } }) %>
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?: { [key: string]: string | boolean }
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
@@ -1,3 +1,3 @@
1
1
  <%= pb_content_tag do %>
2
- <%= pb_rails("icon", props: { dark: object.dark, icon: object.icon, fixed_width: true, aria: { "aria-label": "#{object.icon} icon" } }) %>
2
+ <%= pb_rails("icon", props: { dark: object.dark, icon: object.icon, fixed_width: true }) %>
3
3
  <% end %>
@@ -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,2 @@
1
+ Custom data colors allow for color customization to match the needs of business requirements.
2
+ You can use Playbook's color tokens or 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}) %>