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

Sign up to get free protection for your applications and to get access to all the features.
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],