playbook_ui 14.5.0.pre.alpha.PLAY1485selectablecardoverflowoutlinebug4098 → 14.5.0.pre.alpha.PLAY1486highchartscssdrivenPOC3930

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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/index.js +0 -60
  3. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +9 -1
  4. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.html.erb +9 -1
  5. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.scss +54 -0
  6. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.tsx +5 -184
  7. data/app/pb_kits/playbook/pb_bar_graph/barGraph.test.js +1 -1
  8. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +2 -1
  9. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.tsx +5 -216
  10. data/app/pb_kits/playbook/pb_circle_chart/circleChart.test.js +1 -1
  11. data/app/pb_kits/playbook/pb_filter/Filter/ResultsCount.tsx +2 -4
  12. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +1 -1
  13. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +1 -9
  14. data/app/pb_kits/playbook/pb_form_pill/docs/example.yml +0 -2
  15. data/app/pb_kits/playbook/pb_form_pill/docs/index.js +0 -1
  16. data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.tsx +3 -64
  17. data/app/pb_kits/playbook/pb_gauge/_gauge.tsx +5 -203
  18. data/app/pb_kits/playbook/pb_gauge/gauge.test.js +1 -1
  19. data/app/pb_kits/playbook/pb_line_graph/_line_graph.tsx +5 -154
  20. data/app/pb_kits/playbook/pb_line_graph/lineGraph.test.js +1 -1
  21. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +227 -211
  22. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.jsx +1 -1
  23. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +0 -4
  24. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +0 -2
  25. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +1 -39
  26. data/app/pb_kits/playbook/pb_treemap_chart/_treemap_chart.tsx +5 -113
  27. data/app/pb_kits/playbook/pb_treemap_chart/treemapChart.test.js +1 -1
  28. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +1 -4
  29. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -3
  30. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +1 -3
  31. data/dist/chunks/_typeahead-BywvWGAm.js +22 -0
  32. data/dist/chunks/_weekday_stacked-5OGZKZeo.js +45 -0
  33. data/dist/chunks/lib-DMOmCoAX.js +29 -0
  34. data/dist/chunks/{pb_form_validation-D9zkwt2b.js → pb_form_validation-Dna2I7fw.js} +1 -1
  35. data/dist/chunks/vendor.js +1 -1
  36. data/dist/playbook-doc.js +1 -1
  37. data/dist/playbook-rails-react-bindings.js +1 -1
  38. data/dist/playbook-rails.js +1 -1
  39. data/dist/playbook.css +1 -1
  40. data/lib/playbook/pb_doc_helper.rb +5 -5
  41. data/lib/playbook/version.rb +1 -1
  42. metadata +6 -17
  43. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +0 -19
  44. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +0 -27
  45. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.md +0 -1
  46. data/app/pb_kits/playbook/pb_multi_level_select/context/index.tsx +0 -5
  47. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.html.erb +0 -93
  48. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.md +0 -1
  49. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.jsx +0 -105
  50. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.md +0 -1
  51. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.jsx +0 -106
  52. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.md +0 -1
  53. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select_options.tsx +0 -149
  54. data/dist/chunks/_typeahead-C9g4qCcE.js +0 -22
  55. data/dist/chunks/_weekday_stacked-B0Zid7Rv.js +0 -45
  56. data/dist/chunks/lib-CEpcaI8y.js +0 -29
@@ -47,13 +47,9 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
47
47
 
48
48
  const iconClass = icon ? "_icon" : ""
49
49
  const closeIconSize = size === "small" ? "xs" : "sm"
50
-
51
- const filteredProps: FormPillProps = {...props}
52
- delete filteredProps.truncate
53
-
54
50
  const css = classnames(
55
51
  `pb_form_pill_kit_${color}${iconClass}`,
56
- globalProps(filteredProps),
52
+ globalProps(props),
57
53
  className,
58
54
  size === 'small' ? 'small' : null,
59
55
  textTransform,
@@ -81,7 +77,6 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
81
77
  className="pb_form_pill_text"
82
78
  size={4}
83
79
  text={name}
84
- truncate={props.truncate}
85
80
  />
86
81
  </>
87
82
  )}
@@ -97,7 +92,6 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
97
92
  className="pb_form_pill_text"
98
93
  size={4}
99
94
  text={name}
100
- truncate={props.truncate}
101
95
  />
102
96
  <Icon
103
97
  className="pb_form_pill_icon"
@@ -117,7 +111,6 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
117
111
  className="pb_form_pill_tag"
118
112
  size={4}
119
113
  text={text}
120
- truncate={props.truncate}
121
114
  />
122
115
  </>
123
116
  )}
@@ -126,7 +119,6 @@ const FormPill = (props: FormPillProps): React.ReactElement => {
126
119
  className="pb_form_pill_tag"
127
120
  size={4}
128
121
  text={text}
129
- truncate={props.truncate}
130
122
  />
131
123
  )}
132
124
  <div
@@ -3,7 +3,6 @@ examples:
3
3
  rails:
4
4
  - form_pill_user: Form Pill User
5
5
  - form_pill_size: Form Pill Size
6
- - form_pill_truncated_text: Truncated Text
7
6
  - form_pill_tag: Form Pill Tag
8
7
  - form_pill_example: Example
9
8
  - form_pill_icon: Form Pill Icon
@@ -12,7 +11,6 @@ examples:
12
11
  react:
13
12
  - form_pill_user: Form Pill User
14
13
  - form_pill_size: Form Pill Size
15
- - form_pill_truncated_text: Truncated Text
16
14
  - form_pill_tag: Form Pill Tag
17
15
  - form_pill_example: Example
18
16
  - form_pill_icon: Form Pill Icon
@@ -4,4 +4,3 @@ export { default as FormPillTag } from './_form_pill_tag.jsx'
4
4
  export { default as FormPillExample } from './_form_pill_example.jsx'
5
5
  export { default as FormPillIcon } from './_form_pill_icon.jsx'
6
6
  export { default as FormPillColors } from './_form_pill_colors.jsx'
7
- export { default as FormPillTruncatedText } from './_form_pill_truncated_text.jsx'
@@ -1,70 +1,9 @@
1
- import React, { useState, useEffect } from "react";
2
- import classnames from "classnames";
3
- import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from "../utilities/props";
4
- import { globalProps } from "../utilities/globalProps";
5
- import HighchartsReact from "highcharts-react-official";
6
- import Highcharts from "highcharts/highcharts-gantt";
7
-
8
- import { highchartsTheme } from "../pb_dashboard/pbChartsLightTheme";
9
- import { highchartsDarkTheme } from "../pb_dashboard/pbChartsDarkTheme";
10
-
11
- type GanttChartProps = {
12
- aria?: { [key: string]: string };
13
- className?: string;
14
- customOptions: Partial<Highcharts.Options>;
15
- dark?: boolean;
16
- data?: { [key: string]: string };
17
- htmlOptions?: { [key: string]: string | number | boolean | (() => void) };
18
- id?: string;
19
- };
20
-
21
- const GanttChart = (props: GanttChartProps) => {
22
- const {
23
- aria = {},
24
- className,
25
- customOptions = {},
26
- dark = false,
27
- data = {},
28
- htmlOptions = {},
29
- id,
30
- } = props;
31
-
32
- const ariaProps = buildAriaProps(aria);
33
- const dataProps = buildDataProps(data);
34
- const htmlProps = buildHtmlProps(htmlOptions);
35
- const classes = classnames(
36
- buildCss("pb_gantt_chart"),
37
- globalProps(props),
38
- className
39
- );
40
-
41
- const [options, setOptions] = useState<Highcharts.Options | undefined>(customOptions);
42
-
43
- useEffect(() => {
44
- setOptions(customOptions);
45
- }, [customOptions]);
46
-
47
- const setupTheme = () => {
48
- dark
49
- ? Highcharts.setOptions(highchartsDarkTheme)
50
- : Highcharts.setOptions(highchartsTheme);
51
- };
52
- setupTheme();
1
+ import React from 'react';
53
2
 
3
+ const GanttChart: React.FC = () => {
54
4
  return (
55
5
  <div>
56
- <HighchartsReact
57
- constructorType={"ganttChart"}
58
- containerProps={{
59
- className: classnames(globalProps(props), classes),
60
- id: id,
61
- ...ariaProps,
62
- ...dataProps,
63
- ...htmlProps,
64
- }}
65
- highcharts={Highcharts}
66
- options={options}
67
- />
6
+ This is a simple div component.
68
7
  </div>
69
8
  );
70
9
  };
@@ -1,208 +1,10 @@
1
- import React, { useState, useEffect } from "react";
2
- import classnames from "classnames";
3
- import HighchartsReact from "highcharts-react-official";
4
- import Highcharts from "highcharts";
5
- import { highchartsTheme } from "../pb_dashboard/pbChartsLightTheme";
6
- import { highchartsDarkTheme } from "../pb_dashboard/pbChartsDarkTheme";
7
- import mapColors from "../pb_dashboard/pbChartsColorsHelper";
8
- import highchartsMore from "highcharts/highcharts-more";
9
- import solidGauge from "highcharts/modules/solid-gauge";
10
- import defaultColors from "../tokens/exports/_colors.module.scss";
11
- import typography from "../tokens/exports/_typography.module.scss";
12
-
13
- import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from "../utilities/props";
14
- import { globalProps } from "../utilities/globalProps";
15
- import { GenericObject } from "../types";
16
- import { merge } from 'lodash'
17
-
18
- type GaugeProps = {
19
- aria: { [key: string]: string };
20
- className?: string;
21
- chartData?: { name: string; value: number[] | number }[];
22
- customOptions?: Partial<Highcharts.Options>;
23
- dark?: boolean;
24
- data?: { [key: string]: string };
25
- disableAnimation?: boolean;
26
- fullCircle?: boolean;
27
- height?: string;
28
- htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
29
- id?: string;
30
- max?: number;
31
- min?: number;
32
- prefix?: string;
33
- showLabels?: boolean;
34
- style?: string;
35
- suffix?: string;
36
- title?: string;
37
- tooltipHtml?: string;
38
- colors: string[];
39
- minorTickInterval?: number;
40
- circumference: number[];
41
- };
42
-
43
- const Gauge = ({
44
- aria = {},
45
- chartData,
46
- customOptions = {},
47
- dark = false,
48
- data = {},
49
- disableAnimation = false,
50
- fullCircle = false,
51
- height = null,
52
- htmlOptions = {},
53
- id,
54
- max = 100,
55
- min = 0,
56
- prefix = "",
57
- showLabels = false,
58
- style = "solidgauge",
59
- suffix = "",
60
- title = "",
61
- tooltipHtml = '<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: ' +
62
- "<b>{point.y}</b>",
63
- colors = [],
64
- minorTickInterval = null,
65
- circumference = fullCircle ? [0, 360] : [-100, 100],
66
- ...props
67
- }: GaugeProps): React.ReactElement => {
68
- const ariaProps = buildAriaProps(aria);
69
- const dataProps = buildDataProps(data)
70
- const htmlProps = buildHtmlProps(htmlOptions);
71
- highchartsMore(Highcharts);
72
- solidGauge(Highcharts);
73
- const setupTheme = () => {
74
- dark
75
- ? Highcharts.setOptions(highchartsDarkTheme)
76
- : Highcharts.setOptions(highchartsTheme);
77
- };
78
- setupTheme();
79
-
80
- //set tooltip directly to prevent being overriden by Highcharts defaults
81
- Highcharts.setOptions({
82
- tooltip: {
83
- pointFormat: tooltipHtml,
84
- followPointer: true,
85
- },
86
- });
87
-
88
- const css = buildCss({
89
- pb_gauge_kit: true,
90
- });
91
-
92
- const [options, setOptions] = useState({});
93
-
94
- useEffect(() => {
95
- const formattedChartData = chartData.map((obj: GenericObject) => {
96
- obj.y = obj.value;
97
- delete obj.value;
98
- return obj;
99
- });
100
-
101
- const staticOptions = {
102
- chart: {
103
- events: {
104
- load() {
105
- setTimeout(this.reflow.bind(this), 0);
106
- },
107
- },
108
- type: style,
109
- height: height,
110
- },
111
- title: {
112
- text: title,
113
- },
114
- yAxis: {
115
- min: min,
116
- max: max,
117
- lineWidth: 0,
118
- tickWidth: 0,
119
- minorTickInterval: minorTickInterval,
120
- tickAmount: 2,
121
- tickPositions: [min, max],
122
- labels: {
123
- y: 26,
124
- enabled: showLabels,
125
- },
126
- },
127
- credits: false,
128
- series: [
129
- {
130
- data: formattedChartData,
131
- },
132
- ],
133
- pane: {
134
- center: ["50%", "50%"],
135
- size: "90%",
136
- startAngle: circumference[0],
137
- endAngle: circumference[1],
138
- background: {
139
- borderWidth: 20,
140
- innerRadius: "90%",
141
- outerRadius: "90%",
142
- shape: "arc",
143
- className: "gauge-pane",
144
- },
145
- },
146
- colors:
147
- colors !== undefined && colors.length > 0
148
- ? mapColors(colors)
149
- : highchartsTheme.colors,
150
- plotOptions: {
151
- series: {
152
- animation: !disableAnimation,
153
- },
154
- solidgauge: {
155
- borderColor:
156
- colors !== undefined && colors.length === 1
157
- ? mapColors(colors).join()
158
- : highchartsTheme.colors[0],
159
- borderWidth: 20,
160
- radius: 90,
161
- innerRadius: "90%",
162
- dataLabels: {
163
- borderWidth: 0,
164
- color: defaultColors.text_lt_default,
165
- enabled: true,
166
- format:
167
- `<span class="prefix">${prefix}</span>` +
168
- '<span class="fix">{y:,f}</span>' +
169
- `<span class="suffix">${suffix}</span>`,
170
- style: {
171
- fontFamily: typography.font_family_base,
172
- fontWeight: typography.regular,
173
- fontSize: typography.heading_2,
174
- },
175
- y: -26,
176
- },
177
- },
178
- },
179
- };
180
-
181
- setOptions(merge(staticOptions, customOptions));
182
-
183
- if (document.querySelector(".prefix")) {
184
- document.querySelectorAll(".prefix").forEach((prefix) => {
185
- prefix.setAttribute("y", "28");
186
- });
187
- document
188
- .querySelectorAll(".fix")
189
- .forEach((fix) => fix.setAttribute("y", "38"));
190
- }
191
- // eslint-disable-next-line react-hooks/exhaustive-deps
192
- }, [chartData]);
1
+ import React from 'react';
193
2
 
3
+ const Gauge: React.FC = () => {
194
4
  return (
195
- <HighchartsReact
196
- containerProps={{
197
- className: classnames(css, globalProps(props)),
198
- id: id,
199
- ...ariaProps,
200
- ...dataProps,
201
- ...htmlProps,
202
- }}
203
- highcharts={Highcharts}
204
- options={options}
205
- />
5
+ <div>
6
+ This is a simple div component.
7
+ </div>
206
8
  );
207
9
  };
208
10
 
@@ -17,7 +17,7 @@ afterEach(() => {
17
17
 
18
18
  const testId = 'gauge1';
19
19
 
20
- test('uses exact classname', () => {
20
+ test.skip('uses exact classname', () => {
21
21
  const data = [
22
22
  { name: 'Name', value: 45 },
23
23
  ]
@@ -1,159 +1,10 @@
1
- import React, { useState, useEffect } from "react";
2
- import classnames from "classnames";
3
- import { globalProps } from "../utilities/globalProps";
4
- import { buildAriaProps, buildDataProps, buildHtmlProps } from "../utilities/props";
5
-
6
- import HighchartsReact from "highcharts-react-official";
7
- import Highcharts from "highcharts";
8
- import { highchartsTheme } from "../pb_dashboard/pbChartsLightTheme";
9
- import { highchartsDarkTheme } from "../pb_dashboard/pbChartsDarkTheme";
10
- import mapColors from "../pb_dashboard/pbChartsColorsHelper";
11
- import { merge } from 'lodash'
12
-
13
- type LineGraphProps = {
14
- align?: "left" | "right" | "center";
15
- axisTitle?: string;
16
- dark?: boolean;
17
- xAxisCategories: [];
18
- yAxisMin: number;
19
- yAxisMax: number;
20
- className?: string;
21
- chartData: {
22
- name: string;
23
- data: number[];
24
- }[];
25
- customOptions?: Partial<Highcharts.Options>;
26
- gradient?: boolean;
27
- htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
28
- id: string;
29
- pointStart: number;
30
- subTitle?: string;
31
- title: string;
32
- type?: string;
33
- legend?: boolean;
34
- toggleLegendClick?: boolean;
35
- height?: string;
36
- colors: string[];
37
- layout?: "horizontal" | "vertical" | "proximate";
38
- verticalAlign?: "top" | "middle" | "bottom";
39
- x?: number;
40
- y?: number;
41
- aria?: { [key: string]: string };
42
- data?: { [key: string]: string };
43
- };
44
-
45
- const LineGraph = ({
46
- aria = {},
47
- data = {},
48
- align = "center",
49
- className = "pb_bar_graph",
50
- customOptions = {},
51
- dark = false,
52
- gradient = false,
53
- type = "line",
54
- htmlOptions = {},
55
- id,
56
- legend = false,
57
- toggleLegendClick = true,
58
- layout = "horizontal",
59
- verticalAlign = "bottom",
60
- x = 0,
61
- y = 0,
62
- axisTitle,
63
- xAxisCategories,
64
- yAxisMin,
65
- yAxisMax,
66
- chartData,
67
- pointStart,
68
- subTitle,
69
- title,
70
- height,
71
- colors = [],
72
- ...props
73
- }: LineGraphProps) => {
74
-
75
- const ariaProps = buildAriaProps(aria)
76
- const dataProps = buildDataProps(data)
77
- const htmlProps = buildHtmlProps(htmlOptions)
78
-
79
- const setupTheme = () => {
80
- dark
81
- ? Highcharts.setOptions(highchartsDarkTheme)
82
- : Highcharts.setOptions(highchartsTheme);
83
- };
84
- setupTheme();
85
-
86
- const staticOptions = {
87
- title: {
88
- text: title,
89
- },
90
- chart: {
91
- height: height,
92
- type: type,
93
- },
94
- subtitle: {
95
- text: subTitle,
96
- },
97
- yAxis: {
98
- min: yAxisMin,
99
- max: yAxisMax,
100
- title: {
101
- text: axisTitle,
102
- },
103
- },
104
- xAxis: {
105
- categories: xAxisCategories,
106
- },
107
- legend: {
108
- enabled: legend,
109
- align: align,
110
- verticalAlign: verticalAlign,
111
- layout: layout,
112
- x: x,
113
- y: y,
114
- },
115
- colors:
116
- colors !== undefined && colors.length > 0
117
- ? mapColors(colors)
118
- : highchartsTheme.colors,
119
- plotOptions: {
120
- series: {
121
- pointStart: pointStart,
122
- events: {},
123
- dataLabels: {
124
- enabled: false,
125
- },
126
- },
127
- },
128
- series: chartData,
129
- credits: false,
130
- };
131
-
132
- if (!toggleLegendClick) {
133
- staticOptions.plotOptions.series.events = { legendItemClick: () => false };
134
- }
135
-
136
- const filteredProps: any = {...props};
137
- delete filteredProps.verticalAlign;
138
-
139
- const [options, setOptions] = useState({});
140
-
141
- useEffect(() => {
142
- setOptions(merge(staticOptions, customOptions));
143
- }, [chartData]);
1
+ import React from 'react';
144
2
 
3
+ const LineGraph: React.FC = () => {
145
4
  return (
146
- <HighchartsReact
147
- containerProps={{
148
- className: classnames(globalProps(filteredProps), className),
149
- id: id,
150
- ...ariaProps,
151
- ...dataProps,
152
- ...htmlProps
153
- }}
154
- highcharts={Highcharts}
155
- options={options}
156
- />
5
+ <div>
6
+ This is a simple div component.
7
+ </div>
157
8
  );
158
9
  };
159
10
 
@@ -17,7 +17,7 @@ afterEach(() => {
17
17
 
18
18
  const testId = 'linechart1';
19
19
 
20
- test('uses exact classname', () => {
20
+ test.skip('uses exact classname', () => {
21
21
  const data = [{
22
22
  name: 'Installation',
23
23
  data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],