playbook_ui 15.0.0.pre.alpha.PLAY2419dialogaccessibility10324 → 15.0.0.pre.alpha.PLAY2420atfirstcolumnborderfix10588

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 (119) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +3 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +44 -7
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.html.erb +4 -2
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.jsx +13 -8
  6. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +0 -1
  7. data/app/pb_kits/playbook/pb_card/_card.scss +12 -4
  8. data/app/pb_kits/playbook/pb_card/_card.tsx +3 -3
  9. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +10 -0
  10. data/app/pb_kits/playbook/pb_card/docs/_card_highlight.html.erb +3 -0
  11. data/app/pb_kits/playbook/pb_card/docs/_card_highlight.jsx +8 -0
  12. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.tsx +2 -0
  13. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.html.erb +1 -0
  14. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +6 -4
  15. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +48 -4
  16. data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +5 -7
  17. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +9 -0
  18. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.html.erb +3 -3
  19. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
  20. data/app/pb_kits/playbook/pb_icon_button/_icon_button.tsx +1 -0
  21. data/app/pb_kits/playbook/pb_icon_button/icon_button.html.erb +2 -1
  22. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.tsx +3 -1
  23. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.html.erb +5 -0
  24. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.jsx +24 -0
  25. data/app/pb_kits/playbook/pb_loading_inline/docs/example.yml +2 -0
  26. data/app/pb_kits/playbook/pb_loading_inline/docs/index.js +1 -0
  27. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.html.erb +1 -1
  28. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +11 -0
  29. data/app/pb_kits/playbook/pb_nav/_item.tsx +19 -5
  30. data/app/pb_kits/playbook/pb_nav/item.html.erb +6 -2
  31. data/app/pb_kits/playbook/pb_pb_bar_graph/_pb_bar_graph.scss +0 -0
  32. data/app/pb_kits/playbook/pb_pb_bar_graph/_pb_bar_graph.tsx +62 -0
  33. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors.html.erb +35 -0
  34. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors.jsx +49 -0
  35. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors_rails.md +1 -0
  36. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_colors_react.md +2 -0
  37. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.html.erb +38 -0
  38. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_default.jsx +51 -0
  39. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.html.erb +46 -0
  40. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.jsx +62 -0
  41. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_height.md +3 -0
  42. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_horizontal.html.erb +47 -0
  43. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_horizontal.jsx +60 -0
  44. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend.html.erb +25 -0
  45. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend.jsx +36 -0
  46. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_non_clickable.jsx +44 -0
  47. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.html.erb +100 -0
  48. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_legend_position.jsx +126 -0
  49. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_negative_numbers.html.erb +32 -0
  50. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_negative_numbers.jsx +48 -0
  51. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_secondary_y_axis.html.erb +68 -0
  52. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_secondary_y_axis.jsx +81 -0
  53. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.html.erb +31 -0
  54. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.jsx +42 -0
  55. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_spline.md +2 -0
  56. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_stacked.html.erb +35 -0
  57. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/_pb_bar_graph_stacked.jsx +51 -0
  58. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/example.yml +27 -0
  59. data/app/pb_kits/playbook/pb_pb_bar_graph/docs/index.js +11 -0
  60. data/app/pb_kits/playbook/pb_pb_bar_graph/pbBarGraphTheme.ts +106 -0
  61. data/app/pb_kits/playbook/pb_pb_bar_graph/pb_bar_graph.html.erb +1 -0
  62. data/app/pb_kits/playbook/pb_pb_bar_graph/pb_bar_graph.rb +28 -0
  63. data/app/pb_kits/playbook/pb_pb_bar_graph/pbbargraph.test.jsx +31 -0
  64. data/app/pb_kits/playbook/pb_pb_circle_chart/_pb_circle_chart.scss +3 -0
  65. data/app/pb_kits/playbook/pb_pb_circle_chart/_pb_circle_chart.tsx +62 -0
  66. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.html.erb +31 -0
  67. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_block_content.jsx +81 -0
  68. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.html.erb +25 -0
  69. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.jsx +40 -0
  70. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_color_overrides.md +5 -0
  71. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.html.erb +27 -0
  72. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.jsx +39 -0
  73. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_custom_tooltip.md +5 -0
  74. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.html.erb +93 -0
  75. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.jsx +131 -0
  76. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_legend_position.md +14 -0
  77. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.html.erb +42 -0
  78. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_labels.jsx +58 -0
  79. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.html.erb +24 -0
  80. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_data_with_legend.jsx +38 -0
  81. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.html.erb +22 -0
  82. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_default.jsx +33 -0
  83. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.html.erb +118 -0
  84. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_inner_sizes.jsx +144 -0
  85. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_live_data.jsx +60 -0
  86. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.html.erb +24 -0
  87. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_rounded.jsx +42 -0
  88. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.html.erb +38 -0
  89. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/_pb_circle_chart_with_title.jsx +52 -0
  90. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/example.yml +29 -0
  91. data/app/pb_kits/playbook/pb_pb_circle_chart/docs/index.js +11 -0
  92. data/app/pb_kits/playbook/pb_pb_circle_chart/pbCircleChartTheme.ts +88 -0
  93. data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.html.erb +1 -0
  94. data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.rb +28 -0
  95. data/app/pb_kits/playbook/pb_pb_circle_chart/pb_circle_chart.test.jsx +51 -0
  96. data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +3 -0
  97. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.html.erb +41 -0
  98. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.jsx +80 -0
  99. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_autocomplete.md +1 -0
  100. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +3 -0
  101. data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
  102. data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -3
  103. data/app/pb_kits/playbook/pb_text_input/text_input.test.js +38 -0
  104. data/dist/chunks/{_line_graph-pjRvO-Xb.js → _line_graph-CUfJ7E4h.js} +1 -1
  105. data/dist/chunks/{_typeahead-CZo22jaG.js → _typeahead-DCp1lVJx.js} +2 -2
  106. data/dist/chunks/_weekday_stacked-YwRTPuBs.js +37 -0
  107. data/dist/chunks/{lib-CY5ZPzic.js → lib-BTs5acfO.js} +1 -1
  108. data/dist/chunks/{pb_form_validation-D3b0JKHH.js → pb_form_validation-CKkaQFX3.js} +1 -1
  109. data/dist/chunks/vendor.js +1 -1
  110. data/dist/menu.yml +15 -1
  111. data/dist/playbook-doc.js +2 -2
  112. data/dist/playbook-rails-react-bindings.js +1 -1
  113. data/dist/playbook-rails.js +1 -1
  114. data/dist/playbook.css +1 -1
  115. data/lib/playbook/forms/builder/form_field_builder.rb +37 -2
  116. data/lib/playbook/version.rb +1 -1
  117. metadata +77 -8
  118. data/app/pb_kits/playbook/pb_dialog/dialogHelper.js +0 -65
  119. data/dist/chunks/_weekday_stacked-CXuGHKcc.js +0 -37
@@ -0,0 +1,106 @@
1
+ import colors from '../tokens/exports/_colors.module.scss'
2
+ import typography from '../tokens/exports/_typography.module.scss'
3
+
4
+ const barGraphTheme = {
5
+ title: {
6
+ text: "",
7
+ style: {
8
+ color: colors.text_lt_default,
9
+ fontFamily: typography.font_family_base,
10
+ fontWeight: typography.bold,
11
+ fontSize: typography.heading_3,
12
+ },
13
+ },
14
+ subtitle: {
15
+ text: "",
16
+ style: {
17
+ fontFamily: typography.font_family_base,
18
+ color: colors.text_lt_light,
19
+ fontWeight: typography.regular,
20
+ fontSize: typography.text_base,
21
+ },
22
+ },
23
+ chart: {
24
+ type: "column",
25
+ },
26
+ tooltip: {
27
+ backgroundColor: {
28
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
29
+ stops: [
30
+ [0, colors.bg_dark],
31
+ [1, colors.bg_dark],
32
+ ],
33
+ },
34
+ style: {
35
+ fontFamily: typography.font_family_base,
36
+ color: colors.text_dk_default,
37
+ fontWeight: typography.regular,
38
+ fontSize: typography.text_smaller,
39
+ },
40
+ },
41
+ colors: [
42
+ colors.data_1,
43
+ colors.data_2,
44
+ colors.data_3,
45
+ colors.data_4,
46
+ colors.data_5,
47
+ colors.data_6,
48
+ colors.data_7,
49
+ ],
50
+ credits: { enabled: false },
51
+ legend: {
52
+ enabled: false,
53
+ itemStyle: {
54
+ color: colors.text_lt_light,
55
+ fill: colors.text_lt_light,
56
+ fontSize: typography.text_smaller,
57
+ },
58
+ },
59
+ xAxis: {
60
+ gridLineWidth: 0,
61
+ lineColor: colors.border_light,
62
+ tickColor: colors.border_light,
63
+ labels: {
64
+ style: {
65
+ fontFamily: typography.font_family_base,
66
+ color: colors.text_lt_lighter,
67
+ fontWeight: typography.bold,
68
+ fontSize: typography.text_smaller,
69
+ },
70
+ },
71
+ title: {
72
+ style: {
73
+ color: colors.text_lt_default,
74
+ fontFamily: typography.font_family_base,
75
+ fontWeight: typography.regular,
76
+ fontSize: typography.heading_4,
77
+ },
78
+ },
79
+ },
80
+ yAxis: {
81
+ alternateGridColor: undefined as string | undefined,
82
+ minorTickInterval: null as number | null,
83
+ gridLineColor: colors.border_light,
84
+ minorGridLineColor: colors.border_light,
85
+ lineWidth: 0,
86
+ tickWidth: 0,
87
+ labels: {
88
+ style: {
89
+ fontFamily: typography.font_family_base,
90
+ color: colors.text_lt_lighter,
91
+ fontWeight: typography.bold,
92
+ fontSize: typography.text_smaller,
93
+ },
94
+ },
95
+ title: {
96
+ style: {
97
+ fontFamily: typography.font_family_base,
98
+ color: colors.text_lt_lighter,
99
+ fontWeight: typography.bold,
100
+ fontSize: typography.text_smaller,
101
+ },
102
+ },
103
+ },
104
+ }
105
+
106
+ export default barGraphTheme;
@@ -0,0 +1 @@
1
+ <%= react_component('PbBarGraph', object.react_props) %>
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbPbBarGraph
5
+ class PbBarGraph < ::Playbook::KitBase
6
+ prop :options, default: {}
7
+ prop :container_props, default: {}
8
+
9
+ def react_props
10
+ {
11
+ options: options,
12
+ containerProps: container_props_hash,
13
+ }
14
+ end
15
+
16
+ def container_props_hash
17
+ container_props.merge({
18
+ id: id,
19
+ className: classname,
20
+ }).compact
21
+ end
22
+
23
+ def classname
24
+ generate_classname("pb_pb_bar_graph")
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import { render, screen } from '../utilities/test-utils';
3
+ import PbBarGraph from './_pb_bar_graph';
4
+
5
+ beforeEach(() => {
6
+ // Silences error logs within the test suite.
7
+ jest.spyOn(console, 'error');
8
+ jest.spyOn(console, 'warn');
9
+ console.error.mockImplementation(() => {});
10
+ console.warn.mockImplementation(() => {});
11
+ });
12
+
13
+ afterEach(() => {
14
+ console.error.mockRestore();
15
+ console.warn.mockRestore();
16
+ });
17
+
18
+ const testId = 'bargraph1';
19
+
20
+ test('bargraph uses exact classname', () => {
21
+ render(
22
+ <PbBarGraph
23
+ className='super_important_class'
24
+ data={{ testid: testId }}
25
+ id='bar-default'
26
+ />
27
+ );
28
+
29
+ const kit = screen.getByTestId(testId);
30
+ expect(kit).toHaveClass('super_important_class');
31
+ });
@@ -0,0 +1,3 @@
1
+ .pb_pb_circle_chart {
2
+
3
+ }
@@ -0,0 +1,62 @@
1
+
2
+ import React, { useMemo } from 'react'
3
+ import classnames from 'classnames'
4
+ import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
5
+ import Highcharts from "highcharts"
6
+ import HighchartsReact from "highcharts-react-official"
7
+ import pbCircleGraphTheme from './pbCircleChartTheme'
8
+ import { globalProps } from '../utilities/globalProps'
9
+
10
+ type PbCircleChartProps = {
11
+ aria?: { [key: string]: string },
12
+ className?: string,
13
+ data?: { [key: string]: string },
14
+ id?: string,
15
+ htmlOptions?: { [key: string]: string | number | boolean | (() => void) };
16
+ options: Record<string, unknown>
17
+ }
18
+
19
+ const PbCircleChart = (props: PbCircleChartProps) => {
20
+ const {
21
+ aria = {},
22
+ className,
23
+ data = {},
24
+ id,
25
+ htmlOptions = {},
26
+ options
27
+ } = props
28
+
29
+ const ariaProps = buildAriaProps(aria)
30
+ const dataProps = buildDataProps(data)
31
+ const htmlProps = buildHtmlProps(htmlOptions);
32
+ const classes = classnames(buildCss('pb_pb_circle_chart'), globalProps(props), className)
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 <PbCircleChart />", options)
38
+ return {}
39
+ }
40
+
41
+ return Highcharts.merge({}, pbCircleGraphTheme, 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 PbCircleChart
@@ -0,0 +1,31 @@
1
+ <% data = [
2
+ {
3
+ name: "Waiting for Calls",
4
+ y: 41,
5
+ },
6
+ {
7
+ name: "On Call",
8
+ y: 49,
9
+ },
10
+ {
11
+ name: "After Call",
12
+ y: 10,
13
+ },
14
+ ] %>
15
+
16
+ <% chart_options = {
17
+ series: [{
18
+ data: data,
19
+ innerSize: '100%',
20
+ borderWidth: '20',
21
+ }],
22
+ } %>
23
+
24
+ <div style="position: relative;">
25
+ <%= pb_rails("pb_circle_chart", props: { options: chart_options }) %>
26
+
27
+ <div class="pb-circle-chart-block"
28
+ style="position: absolute; inset: 0; display: flex; justify-content: center; align-items: center; z-index: 1; text-align: center; pointer-events: none;">
29
+ <%= pb_rails("title", props: { size: 1, tag: "div", text: "83" }) %>
30
+ </div>
31
+ </div>
@@ -0,0 +1,81 @@
1
+ import React from "react";
2
+ import { PbCircleChart, Title } from "playbook-ui";
3
+
4
+ const data= [
5
+ {
6
+ name: "Waiting for Calls",
7
+ y: 41,
8
+ },
9
+ {
10
+ name: "On Call",
11
+ y: 49,
12
+ },
13
+ {
14
+ name: "After Call",
15
+ y: 10,
16
+ },
17
+ ]
18
+
19
+
20
+ const PbCircleChartBlockContent = (props) => {
21
+ const chartOptions = {
22
+ series: [{
23
+ data: data,
24
+ innerSize: '100%',
25
+ borderWidth: 20,
26
+ borderColor: null,
27
+ }],
28
+ chart: {
29
+ events: {
30
+ render: function() {
31
+ const chart = this;
32
+ const blockElement = document.querySelector('.pb-circle-chart-block');
33
+ if (blockElement) {
34
+ blockElement.style.width = chart.chartWidth + 'px';
35
+ blockElement.style.height = chart.chartHeight + 'px';
36
+ }
37
+ },
38
+ redraw: function() {
39
+ const chart = this;
40
+ const blockElement = document.querySelector('.pb-circle-chart-block');
41
+ if (blockElement) {
42
+ blockElement.style.width = chart.chartWidth + 'px';
43
+ blockElement.style.height = chart.chartHeight + 'px';
44
+ }
45
+ }
46
+ }
47
+ }
48
+ }
49
+
50
+ return (
51
+ <div style={{ position: 'relative' }}>
52
+ <PbCircleChart
53
+ options={chartOptions}
54
+ {...props}
55
+ />
56
+ <div
57
+ className="pb-circle-chart-block"
58
+ style={{
59
+ position: 'absolute',
60
+ top: 0,
61
+ left: 0,
62
+ display: 'flex',
63
+ justifyContent: 'center',
64
+ alignItems: 'center',
65
+ zIndex: 1,
66
+ textAlign: 'center',
67
+ pointerEvents: 'none'
68
+ }}
69
+ >
70
+ <Title
71
+ size={1}
72
+ tag="div"
73
+ >
74
+ {'83'}
75
+ </Title>
76
+ </div>
77
+ </div>
78
+ );
79
+ };
80
+
81
+ export default PbCircleChartBlockContent;
@@ -0,0 +1,25 @@
1
+ <% data = [
2
+ {
3
+ name: "Waiting for Calls",
4
+ y: 41,
5
+ },
6
+ {
7
+ name: "On Call",
8
+ y: 49,
9
+ },
10
+ {
11
+ name: "After Call",
12
+ y: 10,
13
+ },
14
+ ] %>
15
+
16
+ <% chart_options = {
17
+ series: [{ data: data }],
18
+ plotOptions: {
19
+ pie: {
20
+ colors: ["#144075", "#1CA05C", "#F9BB00"],
21
+ },
22
+ },
23
+ } %>
24
+
25
+ <%= pb_rails("pb_circle_chart", props: { options: chart_options }) %>
@@ -0,0 +1,40 @@
1
+ import React from "react";
2
+ import { PbCircleChart, colors } from "playbook-ui";
3
+
4
+ const data= [
5
+ {
6
+ name: "Waiting for Calls",
7
+ y: 41,
8
+ },
9
+ {
10
+ name: "On Call",
11
+ y: 49,
12
+ },
13
+ {
14
+ name: "After Call",
15
+ y: 10,
16
+ },
17
+ ]
18
+
19
+
20
+ const PbCircleChartColorOverrides = (props) => {
21
+ const chartOptions = {
22
+ series: [{ data: data }],
23
+ plotOptions: {
24
+ pie: {
25
+ colors: ["#144075", colors.data_4, colors.data_2], // Custom colors via hex OR Playbook color tokens
26
+ },
27
+ },
28
+ };
29
+
30
+ return (
31
+ <div>
32
+ <PbCircleChart
33
+ options={chartOptions}
34
+ {...props}
35
+ />
36
+ </div>
37
+ );
38
+ }
39
+
40
+ export default PbCircleChartColorOverrides;
@@ -0,0 +1,5 @@
1
+ Custom data colors allow for color customization to match the needs of business requirements.
2
+
3
+ For React, import the colors from Playbook's tokens, then set custom colors in the plotOptions.pie.colors array using the desired color variables.
4
+
5
+ For Rails, only HEX colors can be used eg: `#CA0095`
@@ -0,0 +1,27 @@
1
+
2
+ <% data = [
3
+ {
4
+ name: 'Waiting for Calls',
5
+ y: 41,
6
+ },
7
+ {
8
+ name: 'On Call',
9
+ y: 49,
10
+ },
11
+ {
12
+ name: 'After Call',
13
+ y: 10,
14
+ },
15
+ ] %>
16
+
17
+ <% chart_options = {
18
+ series: [{ data: data }],
19
+ tooltip: {
20
+ headerFormat: nil,
21
+ pointFormat: '<p>Custom tooltip for {point.name} <br/>with value: {point.y}</p>',
22
+ useHTML: true,
23
+ },
24
+ } %>
25
+
26
+
27
+ <%= pb_rails("pb_circle_chart", props: { options: chart_options }) %>
@@ -0,0 +1,39 @@
1
+ import React from "react";
2
+ import { PbCircleChart } from "playbook-ui";
3
+
4
+ const data = [
5
+ {
6
+ name: 'Waiting for Calls',
7
+ y: 41,
8
+ },
9
+ {
10
+ name: 'On Call',
11
+ y: 49,
12
+ },
13
+ {
14
+ name: 'After Call',
15
+ y: 10,
16
+ },
17
+ ]
18
+
19
+ const PbCircleChartCustomTooltip = (props) => {
20
+ const chartOptions = {
21
+ series: [{ data: data }],
22
+ tooltip: {
23
+ headerFormat: null,
24
+ pointFormat: '<p>Custom tooltip for {point.name} <br/>with value: {point.y}</p>',
25
+ useHTML: true,
26
+ },
27
+ }
28
+
29
+ return (
30
+ <div>
31
+ <PbCircleChart
32
+ options={chartOptions}
33
+ {...props}
34
+ />
35
+ </div>
36
+ );
37
+ };
38
+
39
+ export default PbCircleChartCustomTooltip;
@@ -0,0 +1,5 @@
1
+ Custom tooltip formatting is configured through the tooltip object in the options passed to the kit:
2
+ `headerFormat` **Type**: String | when set to null will disable the header.
3
+ `pointFormat` **Type**: String | defines the HTML template for each data point and supports custom HTML when `useHTML` is enabled.
4
+ `useHTML` **Type**: boolean (default false) | enables HTML rendering in tooltips.
5
+ `{point.name}` and `{point.y}` are useful values that can be referenced for each point in the graph.
@@ -0,0 +1,93 @@
1
+ <% data_first = [{
2
+ name: 'Bugs',
3
+ y: 8,
4
+ },
5
+ {
6
+ name: 'Chores',
7
+ y: 1,
8
+ },
9
+ {
10
+ name: 'Stories',
11
+ y: 12,
12
+ }] %>
13
+
14
+ <% data_second = [{
15
+ name: 'Bugs',
16
+ y: 8,
17
+ },
18
+ {
19
+ name: 'Chores',
20
+ y: 1,
21
+ },
22
+ {
23
+ name: 'Stories',
24
+ y: 12,
25
+ }] %>
26
+
27
+ <% data_third = [{
28
+ name: 'Queued',
29
+ y: 7,
30
+ },
31
+ {
32
+ name: 'In Progress',
33
+ y: 6,
34
+ },
35
+ {
36
+ name: 'Validation',
37
+ y: 3,
38
+ },
39
+ {
40
+ name: 'Done',
41
+ y: 6,
42
+ },
43
+ ] %>
44
+
45
+
46
+ <% chart_options_first = {
47
+ title: { text: "Alignment of Legend" },
48
+ series: [{ data: data_first }],
49
+ legend: {
50
+ align: 'right',
51
+ verticalAlign: 'top'
52
+ },
53
+ plotOptions: {
54
+ pie: {
55
+ showInLegend: true
56
+ }
57
+ }
58
+ } %>
59
+
60
+ <% chart_options_second = {
61
+ title: { text: "Layout of Legend" },
62
+ series: [{ data: data_second }],
63
+ legend: {
64
+ layout: 'vertical'
65
+ },
66
+ plotOptions: {
67
+ pie: {
68
+ showInLegend: true
69
+ }
70
+ }
71
+ } %>
72
+
73
+ <% chart_options_third = {
74
+ title: { text: "Offset of Legend" },
75
+ series: [{ data: data_third }],
76
+ legend: {
77
+ layout: 'vertical',
78
+ x: 100,
79
+ y: 10
80
+ },
81
+ plotOptions: {
82
+ pie: {
83
+ showInLegend: true
84
+ }
85
+ }
86
+ } %>
87
+
88
+ <%= pb_rails("title", props: { size: 4, text: "align | verticalAlign", padding_y:"sm" }) %>
89
+ <%= pb_rails("pb_circle_chart", props: { options: chart_options_first }) %>
90
+ <%= pb_rails("title", props: { size: 4, text: "layout", padding_y:"sm" }) %>
91
+ <%= pb_rails("pb_circle_chart", props: { options: chart_options_second }) %>
92
+ <%= pb_rails("title", props: { size: 4, text: "x | y", padding_y:"sm" }) %>
93
+ <%= pb_rails("pb_circle_chart", props: { options: chart_options_third }) %>