playbook_ui 11.11.0.pre.alpha.renderer1 → 11.12.0
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/index.js +1 -0
- data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.jsx +21 -1
- data/app/pb_kits/playbook/pb_bar_graph/bar_graph.rb +17 -1
- data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.html.erb +62 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.jsx +86 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.md +17 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_button/_button.scss +6 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_default.html.erb +4 -4
- data/app/pb_kits/playbook/pb_button/docs/_button_default.jsx +18 -17
- data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.jsx +15 -0
- data/app/pb_kits/playbook/pb_circle_chart/circle_chart.rb +16 -0
- data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.html.erb +86 -0
- data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +114 -0
- data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.md +17 -0
- data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_circle_chart/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +50 -50
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_time.jsx +1 -0
- data/app/pb_kits/playbook/pb_date_picker/plugins/timeSelect.ts +89 -89
- data/app/pb_kits/playbook/pb_date_picker/sass_partials/_time_selection_styles.scss +15 -0
- data/app/pb_kits/playbook/pb_dialog/_dialog.scss +6 -1
- data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +7 -1
- data/app/pb_kits/playbook/pb_dialog/dialog.rb +1 -1
- data/app/pb_kits/playbook/pb_dialog/dialogHelper.js +16 -11
- data/app/pb_kits/playbook/pb_dialog/dialog_footer.html.erb +1 -1
- data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +1 -1
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.md +3 -1
- data/app/pb_kits/playbook/pb_dialog/docs/_dialog_default.md +3 -0
- data/app/pb_kits/playbook/pb_icon/_icon.tsx +3 -1
- data/app/pb_kits/playbook/pb_icon/icon.rb +8 -1
- data/app/pb_kits/playbook/pb_icon/icon.test.js +155 -0
- data/app/pb_kits/playbook/pb_legend/{_legend.jsx → _legend.tsx} +6 -6
- data/app/pb_kits/playbook/pb_legend/legend.test.js +29 -0
- data/app/pb_kits/playbook/pb_line_graph/_line_graph.jsx +20 -0
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.html.erb +62 -0
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.jsx +83 -0
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.md +17 -0
- data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_line_graph/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_line_graph/line_graph.rb +17 -1
- data/app/pb_kits/playbook/pb_radio/_radio.scss +1 -1
- data/app/pb_kits/playbook/pb_title/_title.scss +5 -0
- data/app/pb_kits/playbook/pb_title/_title.tsx +4 -1
- data/app/pb_kits/playbook/pb_title/docs/{_title_light.html.erb → _title_default.html.erb} +3 -3
- data/app/pb_kits/playbook/pb_title/docs/{_title_light.jsx → _title_default.jsx} +14 -14
- data/app/pb_kits/playbook/pb_title/docs/{_title_light.md → _title_default.md} +0 -0
- data/app/pb_kits/playbook/pb_title/docs/_title_light_weight.html.erb +1 -0
- data/app/pb_kits/playbook/pb_title/docs/_title_light_weight.jsx +19 -0
- data/app/pb_kits/playbook/pb_title/docs/_title_light_weight.md +4 -0
- data/app/pb_kits/playbook/pb_title/docs/example.yml +4 -2
- data/app/pb_kits/playbook/pb_title/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_title/title.rb +6 -1
- data/app/pb_kits/playbook/pb_title/title.test.js +13 -0
- data/app/pb_kits/playbook/plugins/pb_chart.js +13 -0
- data/app/pb_kits/playbook/tokens/_titles.scss +10 -1
- data/app/pb_kits/playbook/tokens/_typography.scss +2 -2
- data/lib/playbook/version.rb +1 -1
- metadata +22 -8
@@ -0,0 +1,155 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { render, screen, cleanup } from '../utilities/test-utils'
|
3
|
+
|
4
|
+
import Icon from './_icon'
|
5
|
+
|
6
|
+
const testId = "icon-kit"
|
7
|
+
|
8
|
+
describe("Icon Kit", () => {
|
9
|
+
test("renders Icon classname", () => {
|
10
|
+
render(
|
11
|
+
<Icon
|
12
|
+
data={{ testid: testId }}
|
13
|
+
fixedWidth
|
14
|
+
icon="user"
|
15
|
+
/>
|
16
|
+
)
|
17
|
+
|
18
|
+
const kit = screen.getByTestId(testId)
|
19
|
+
expect(kit).toHaveClass("fa-user pb_icon_kit fa-fw far")
|
20
|
+
})
|
21
|
+
|
22
|
+
test("renders rotate prop", () => {[
|
23
|
+
"90", "180", "270"].forEach((rotateProp)=> {
|
24
|
+
render(
|
25
|
+
<Icon
|
26
|
+
data={{ testid: testId }}
|
27
|
+
fixedWidth
|
28
|
+
icon="user"
|
29
|
+
rotation={rotateProp}
|
30
|
+
/>
|
31
|
+
)
|
32
|
+
|
33
|
+
const kit = screen.getByTestId(testId)
|
34
|
+
expect(kit).toHaveClass(`fa-user pb_icon_kit fa-fw fa-rotate-${rotateProp} far`)
|
35
|
+
|
36
|
+
cleanup()
|
37
|
+
})
|
38
|
+
})
|
39
|
+
|
40
|
+
test("renders flip prop", () => {
|
41
|
+
render(
|
42
|
+
<Icon
|
43
|
+
data={{ testid: testId }}
|
44
|
+
fixedWidth
|
45
|
+
flip="horizontal"
|
46
|
+
icon="user"
|
47
|
+
/>
|
48
|
+
)
|
49
|
+
|
50
|
+
const kit = screen.getByTestId(testId)
|
51
|
+
expect(kit).toHaveClass("fa-user pb_icon_kit fa-fw fa-flip-horizontal far")
|
52
|
+
})
|
53
|
+
|
54
|
+
|
55
|
+
test("renders spinning icon", () => {
|
56
|
+
render(
|
57
|
+
<Icon
|
58
|
+
data={{ testid: testId }}
|
59
|
+
fixedWidth
|
60
|
+
icon="spinner"
|
61
|
+
spin
|
62
|
+
/>
|
63
|
+
)
|
64
|
+
|
65
|
+
const kit = screen.getByTestId(testId)
|
66
|
+
expect(kit).toHaveClass("fa-spinner pb_icon_kit fa-fw fa-spin far")
|
67
|
+
})
|
68
|
+
|
69
|
+
test("renders pull icon", () => {
|
70
|
+
render(
|
71
|
+
<Icon
|
72
|
+
data={{ testid: testId }}
|
73
|
+
fixedWidth
|
74
|
+
icon="arrow-left"
|
75
|
+
pull="left"
|
76
|
+
/>
|
77
|
+
)
|
78
|
+
|
79
|
+
const kit = screen.getByTestId(testId)
|
80
|
+
expect(kit).toHaveClass("fa-arrow-left pb_icon_kit fa-fw fa-pull-left far")
|
81
|
+
})
|
82
|
+
|
83
|
+
test("renders pull icon", () => {
|
84
|
+
render(
|
85
|
+
<Icon
|
86
|
+
data={{ testid: testId }}
|
87
|
+
fixedWidth
|
88
|
+
icon="arrow-left"
|
89
|
+
pull="left"
|
90
|
+
/>
|
91
|
+
)
|
92
|
+
|
93
|
+
const kit = screen.getByTestId(testId)
|
94
|
+
expect(kit).toHaveClass("fa-arrow-left pb_icon_kit fa-fw fa-pull-left far")
|
95
|
+
})
|
96
|
+
|
97
|
+
test("renders border around icon", () => {
|
98
|
+
render(
|
99
|
+
<Icon
|
100
|
+
border
|
101
|
+
data={{ testid: testId }}
|
102
|
+
fixedWidth
|
103
|
+
icon="user"
|
104
|
+
/>
|
105
|
+
)
|
106
|
+
|
107
|
+
const kit = screen.getByTestId(testId)
|
108
|
+
expect(kit).toHaveClass("fa-user pb_icon_kit fa-border fa-fw far")
|
109
|
+
})
|
110
|
+
|
111
|
+
test("renders size prop", () => {
|
112
|
+
["lg",
|
113
|
+
"sm",
|
114
|
+
"xs",
|
115
|
+
"1x",
|
116
|
+
"2x",
|
117
|
+
"3x",
|
118
|
+
"4x",
|
119
|
+
"5x",
|
120
|
+
"6x",
|
121
|
+
"7x",
|
122
|
+
"8x",
|
123
|
+
"9x",
|
124
|
+
"10x"].forEach(
|
125
|
+
(sizeProp) => {
|
126
|
+
render(
|
127
|
+
<Icon
|
128
|
+
data={{ testid: testId }}
|
129
|
+
icon="user"
|
130
|
+
size={sizeProp}
|
131
|
+
/>
|
132
|
+
)
|
133
|
+
|
134
|
+
const kit = screen.getByTestId(testId)
|
135
|
+
expect(kit).toHaveClass(`pb_icon_kit fa-user fa-fw fa-${sizeProp} far`)
|
136
|
+
|
137
|
+
cleanup()
|
138
|
+
})
|
139
|
+
})
|
140
|
+
|
141
|
+
test("renders fontStyle prop", () => {
|
142
|
+
render(
|
143
|
+
<Icon
|
144
|
+
data={{ testid: testId }}
|
145
|
+
fixedWidth
|
146
|
+
fontStyle="fas"
|
147
|
+
icon="user"
|
148
|
+
/>
|
149
|
+
)
|
150
|
+
|
151
|
+
const kit = screen.getByTestId(testId)
|
152
|
+
expect(kit).toHaveClass("fa-user pb_icon_kit fa-fw fas")
|
153
|
+
})
|
154
|
+
|
155
|
+
})
|
@@ -1,5 +1,3 @@
|
|
1
|
-
/* @flow */
|
2
|
-
|
3
1
|
import React from 'react'
|
4
2
|
import classnames from 'classnames'
|
5
3
|
|
@@ -10,7 +8,7 @@ import Body from '../pb_body/_body'
|
|
10
8
|
import Title from '../pb_title/_title'
|
11
9
|
|
12
10
|
type LegendProps = {
|
13
|
-
aria?:
|
11
|
+
aria?: { [key: string]: string },
|
14
12
|
className?: string,
|
15
13
|
color?: string,
|
16
14
|
dark?: boolean,
|
@@ -59,14 +57,16 @@ const Legend = (props: LegendProps) => {
|
|
59
57
|
<span className={`${customColor ? "pb_legend_indicator_circle_custom" : "pb_legend_indicator_circle"}`}
|
60
58
|
style={customColorStyle}
|
61
59
|
/>
|
62
|
-
|
63
|
-
|
60
|
+
{
|
61
|
+
prefixText && (
|
62
|
+
<Title
|
64
63
|
dark={dark}
|
65
64
|
size={4}
|
66
65
|
tag="span"
|
67
66
|
text={` ${prefixText} `}
|
68
67
|
/>
|
69
|
-
|
68
|
+
)
|
69
|
+
}
|
70
70
|
{` ${text} `}
|
71
71
|
</Body>
|
72
72
|
</div>
|
@@ -27,3 +27,32 @@ test('color prop', () => {
|
|
27
27
|
const kit = screen.getByTestId('primary-test')
|
28
28
|
expect(kit).toHaveClass('pb_legend_kit_category_17')
|
29
29
|
})
|
30
|
+
|
31
|
+
test('prefixText prop renders', () => {
|
32
|
+
render(
|
33
|
+
<Legend
|
34
|
+
color="category_17"
|
35
|
+
data={{ testid: 'primary-test' }}
|
36
|
+
prefixText="10"
|
37
|
+
text="Test colors"
|
38
|
+
/>
|
39
|
+
)
|
40
|
+
|
41
|
+
const kit = screen.getByTestId('primary-test')
|
42
|
+
const prefix = kit.querySelector(".pb_title_kit_size_4")
|
43
|
+
expect(prefix).toBeInTheDocument()
|
44
|
+
})
|
45
|
+
|
46
|
+
test('Color prop renders with custom HEX value', () => {
|
47
|
+
render(
|
48
|
+
<Legend
|
49
|
+
color="#dc418a"
|
50
|
+
data={{ testid: 'primary-test' }}
|
51
|
+
text="Test colors"
|
52
|
+
/>
|
53
|
+
)
|
54
|
+
|
55
|
+
const kit = screen.getByTestId('primary-test')
|
56
|
+
const circle = kit.querySelector(".pb_legend_indicator_circle_custom")
|
57
|
+
expect(circle).toHaveStyle('background: rgb(220, 65, 138);')
|
58
|
+
})
|
@@ -7,6 +7,7 @@ import { globalProps } from '../utilities/globalProps'
|
|
7
7
|
import pbChart from '../plugins/pb_chart'
|
8
8
|
|
9
9
|
type LineGraphProps = {
|
10
|
+
align?: "left" | "right" | "center",
|
10
11
|
axisTitle?: string,
|
11
12
|
dark?: Boolean,
|
12
13
|
xAxisCategories: array,
|
@@ -27,20 +28,30 @@ type LineGraphProps = {
|
|
27
28
|
toggleLegendClick?: boolean,
|
28
29
|
height?: string,
|
29
30
|
colors: array,
|
31
|
+
layout?: "horizontal" | "vertical" | "proximate",
|
32
|
+
verticalAlign?: "top" | "middle" | "bottom",
|
33
|
+
x?: number,
|
34
|
+
y?: number,
|
30
35
|
}
|
31
36
|
|
32
37
|
export default class LineGraph extends React.Component<LineGraphProps> {
|
33
38
|
static defaultProps = {
|
39
|
+
align: "center",
|
34
40
|
className: 'pb_bar_graph',
|
35
41
|
dark: false,
|
36
42
|
gradient: false,
|
37
43
|
type: 'line',
|
38
44
|
legend: false,
|
39
45
|
toggleLegendClick: true,
|
46
|
+
layout: "horizontal",
|
47
|
+
verticalAlign: "bottom",
|
48
|
+
x: 0,
|
49
|
+
y: 0,
|
40
50
|
}
|
41
51
|
|
42
52
|
componentDidMount() {
|
43
53
|
const {
|
54
|
+
align,
|
44
55
|
axisTitle,
|
45
56
|
dark,
|
46
57
|
xAxisCategories,
|
@@ -57,9 +68,14 @@ export default class LineGraph extends React.Component<LineGraphProps> {
|
|
57
68
|
toggleLegendClick,
|
58
69
|
height,
|
59
70
|
colors = [],
|
71
|
+
layout,
|
72
|
+
verticalAlign,
|
73
|
+
x,
|
74
|
+
y,
|
60
75
|
} = this.props
|
61
76
|
|
62
77
|
new pbChart(`.${className}`, {
|
78
|
+
align,
|
63
79
|
axisTitle: axisTitle,
|
64
80
|
chartData: chartData,
|
65
81
|
colors: colors,
|
@@ -75,6 +91,10 @@ export default class LineGraph extends React.Component<LineGraphProps> {
|
|
75
91
|
legend: legend,
|
76
92
|
toggleLegendClick: toggleLegendClick,
|
77
93
|
height: height,
|
94
|
+
layout,
|
95
|
+
verticalAlign,
|
96
|
+
x,
|
97
|
+
y,
|
78
98
|
})
|
79
99
|
}
|
80
100
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<% data = [{
|
2
|
+
name: 'Installation',
|
3
|
+
data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175]
|
4
|
+
}, {
|
5
|
+
name: 'Manufacturing',
|
6
|
+
data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434]
|
7
|
+
}, {
|
8
|
+
name: 'Sales & Distribution',
|
9
|
+
data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387]
|
10
|
+
}, {
|
11
|
+
name: 'Project Development',
|
12
|
+
data: [nil, nil, 7988, 12169, 15112, 22452, 34400, 34227]
|
13
|
+
}, {
|
14
|
+
name: 'Other',
|
15
|
+
data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111]
|
16
|
+
}] %>
|
17
|
+
|
18
|
+
<%= pb_rails("title", props: {size: 4, text: "align | vertical_align", padding_top: "sm", padding_bottom: "sm"})%>
|
19
|
+
|
20
|
+
<%= pb_rails("line_graph", props: {
|
21
|
+
id: "legend-position-line",
|
22
|
+
gradient: false,
|
23
|
+
chart_data: data,
|
24
|
+
x_axis_categories:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug'],
|
25
|
+
title: 'Alignment of Legend',
|
26
|
+
axis_title: 'Number of Employees',
|
27
|
+
legend: true,
|
28
|
+
align: 'right',
|
29
|
+
vertical_align: 'top',
|
30
|
+
padding_bottom: "sm",
|
31
|
+
}) %>
|
32
|
+
|
33
|
+
<%= pb_rails("title", props: {size: 4, text: "layout", padding_top: "sm", padding_bottom: "sm"})%>
|
34
|
+
|
35
|
+
<%= pb_rails("line_graph", props: {
|
36
|
+
id: "legend-position-line-1",
|
37
|
+
gradient: false,
|
38
|
+
chart_data: data,
|
39
|
+
x_axis_categories:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug'],
|
40
|
+
title: 'Layout of Legend',
|
41
|
+
axis_title: 'Number of Employees',
|
42
|
+
legend: true,
|
43
|
+
layout: 'vertical',
|
44
|
+
padding_top: "sm",
|
45
|
+
padding_bottom: "sm",
|
46
|
+
}) %>
|
47
|
+
|
48
|
+
<%= pb_rails("title", props: {size: 4, text: "x | y", padding_top: "sm", padding_bottom: "sm"})%>
|
49
|
+
|
50
|
+
<%= pb_rails("line_graph", props: {
|
51
|
+
id: "legend-position-line-2",
|
52
|
+
gradient: false,
|
53
|
+
chart_data: data,
|
54
|
+
x_axis_categories:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug'],
|
55
|
+
title: 'Offset of Legend',
|
56
|
+
axis_title: 'Number of Employees',
|
57
|
+
legend: true,
|
58
|
+
layout: "vertical",
|
59
|
+
x: 100,
|
60
|
+
y: 10,
|
61
|
+
padding_top: "sm",
|
62
|
+
}) %>
|
@@ -0,0 +1,83 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { LineGraph, Title } from '../..'
|
3
|
+
|
4
|
+
const data = [{
|
5
|
+
name: 'Installation',
|
6
|
+
data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],
|
7
|
+
}, {
|
8
|
+
name: 'Manufacturing',
|
9
|
+
data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434],
|
10
|
+
}, {
|
11
|
+
name: 'Sales & Distribution',
|
12
|
+
data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387],
|
13
|
+
}, {
|
14
|
+
name: 'Project Development',
|
15
|
+
data: [null, null, 7988, 12169, 15112, 22452, 34400, 34227],
|
16
|
+
}, {
|
17
|
+
name: 'Other',
|
18
|
+
data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],
|
19
|
+
}]
|
20
|
+
|
21
|
+
const LineGraphLegendPosition = (props) => (
|
22
|
+
<div>
|
23
|
+
<Title
|
24
|
+
paddingBottom="sm"
|
25
|
+
paddingTop="sm"
|
26
|
+
size={4}
|
27
|
+
tag="h4"
|
28
|
+
text="align | verticalAlign"
|
29
|
+
/>
|
30
|
+
<LineGraph
|
31
|
+
align='right'
|
32
|
+
axisTitle="Number of Employees"
|
33
|
+
chartData={data}
|
34
|
+
id="legend-position-line"
|
35
|
+
legend
|
36
|
+
title="Alignment of Legend"
|
37
|
+
verticalAlign="top"
|
38
|
+
xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']}
|
39
|
+
yAxisMin={0}
|
40
|
+
{...props}
|
41
|
+
/>
|
42
|
+
<Title
|
43
|
+
paddingBottom="sm"
|
44
|
+
paddingTop="sm"
|
45
|
+
size={4}
|
46
|
+
tag="h4"
|
47
|
+
text="layout"
|
48
|
+
/>
|
49
|
+
<LineGraph
|
50
|
+
axisTitle="Number of Employees"
|
51
|
+
chartData={data}
|
52
|
+
id="legend-position-line-1"
|
53
|
+
layout="vertical"
|
54
|
+
legend
|
55
|
+
title="Layout of Legend"
|
56
|
+
xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']}
|
57
|
+
yAxisMin={0}
|
58
|
+
{...props}
|
59
|
+
/>
|
60
|
+
<Title
|
61
|
+
paddingBottom="sm"
|
62
|
+
paddingTop="sm"
|
63
|
+
size={4}
|
64
|
+
tag="h4"
|
65
|
+
text="x | y"
|
66
|
+
/>
|
67
|
+
<LineGraph
|
68
|
+
axisTitle="Number of Employees"
|
69
|
+
chartData={data}
|
70
|
+
id="legend-position-line-2"
|
71
|
+
layout="vertical"
|
72
|
+
legend
|
73
|
+
title="Offset of Legend"
|
74
|
+
x={100}
|
75
|
+
xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']}
|
76
|
+
y={10}
|
77
|
+
yAxisMin={0}
|
78
|
+
{...props}
|
79
|
+
/>
|
80
|
+
</div>
|
81
|
+
)
|
82
|
+
|
83
|
+
export default LineGraphLegendPosition
|
@@ -0,0 +1,17 @@
|
|
1
|
+
##### Prop
|
2
|
+
|
3
|
+
`align` **Type**: String | **Values**: left | center | right (defaults to center)
|
4
|
+
`verticalAlign` **Type**: String | **Values**: top | middle | bottom (defaults middle)
|
5
|
+
`layout` **Type**: String | **Values**: horizontal | vertical | proximate (defaults to horizontal)
|
6
|
+
`x` **Type**: Number (defaults to 0)
|
7
|
+
`y` **Type**: Number (defaults to 0)
|
8
|
+
|
9
|
+
-
|
10
|
+
|
11
|
+
- `layout` determines the position of the legend items
|
12
|
+
`layout: proximate` will place the legend items as close as possible to the graphs they're representing. It will also determine whether to place the legend above/below or on the side of the plot area, if the legend is in a corner.
|
13
|
+
|
14
|
+
- `x` offsets the legend relative to its horizontal alignmnet. Negative x moves it to the left, positive x moves it to the right
|
15
|
+
|
16
|
+
|
17
|
+
- `y` offsets the legend relative to its vertical alignmnet. Negative y moves it up, positive y moves it down.
|
@@ -3,6 +3,7 @@ examples:
|
|
3
3
|
rails:
|
4
4
|
- line_graph_default: Default
|
5
5
|
- line_graph_legend: Legend
|
6
|
+
- line_graph_legend_position: Legend Position
|
6
7
|
- line_graph_legend_nonclickable: Legend Nonclickable
|
7
8
|
- line_graph_height: Height
|
8
9
|
- line_graph_colors: Color Overrides
|
@@ -11,6 +12,7 @@ examples:
|
|
11
12
|
react:
|
12
13
|
- line_graph_default: Default
|
13
14
|
- line_graph_legend: Legend
|
15
|
+
- line_graph_legend_position: Legend Position
|
14
16
|
- line_graph_legend_nonclickable: Legend Nonclickable
|
15
17
|
- line_graph_height: Height
|
16
18
|
- line_graph_colors: Color Overrides
|
@@ -1,5 +1,6 @@
|
|
1
1
|
export { default as LineGraphDefault } from './_line_graph_default.jsx'
|
2
2
|
export { default as LineGraphLegend } from './_line_graph_legend.jsx'
|
3
|
+
export { default as LineGraphLegendPosition } from './_line_graph_legend_position.jsx'
|
3
4
|
export { default as LineGraphLegendNonclickable } from './_line_graph_legend_nonclickable.jsx'
|
4
5
|
export { default as LineGraphHeight } from './_line_graph_height.jsx'
|
5
6
|
export { default as LineGraphColors } from './_line_graph_colors.jsx'
|
@@ -3,6 +3,9 @@
|
|
3
3
|
module Playbook
|
4
4
|
module PbLineGraph
|
5
5
|
class LineGraph < Playbook::KitBase
|
6
|
+
prop :align, type: Playbook::Props::Enum,
|
7
|
+
values: %w[left right center],
|
8
|
+
default: "center"
|
6
9
|
prop :axis_title
|
7
10
|
prop :chart_data, type: Playbook::Props::Array,
|
8
11
|
default: []
|
@@ -22,6 +25,14 @@ module Playbook
|
|
22
25
|
prop :height
|
23
26
|
prop :colors, type: Playbook::Props::Array,
|
24
27
|
default: []
|
28
|
+
prop :layout, type: Playbook::Props::Enum,
|
29
|
+
values: %w[horizontal vertical proximate],
|
30
|
+
default: "horizontal"
|
31
|
+
prop :vertical_align, type: Playbook::Props::Enum,
|
32
|
+
values: %w[top middle bottom],
|
33
|
+
default: "bottom"
|
34
|
+
prop :x, type: Playbook::Props::Numeric
|
35
|
+
prop :y, type: Playbook::Props::Numeric
|
25
36
|
|
26
37
|
def chart_type
|
27
38
|
gradient ? "area" : "line"
|
@@ -29,13 +40,14 @@ module Playbook
|
|
29
40
|
|
30
41
|
def chart_options
|
31
42
|
{
|
43
|
+
align: align,
|
32
44
|
id: id,
|
33
45
|
className: classname,
|
34
46
|
chartData: chart_data,
|
35
47
|
dark: dark ? "dark" : "",
|
36
48
|
type: chart_type,
|
37
49
|
title: title,
|
38
|
-
|
50
|
+
subTitle: subtitle,
|
39
51
|
axisTitle: axis_title,
|
40
52
|
pointStart: point_start,
|
41
53
|
xAxisCategories: x_axis_categories,
|
@@ -45,6 +57,10 @@ module Playbook
|
|
45
57
|
toggleLegendClick: toggle_legend_click,
|
46
58
|
height: height,
|
47
59
|
colors: colors,
|
60
|
+
layout: layout,
|
61
|
+
verticalAlign: vertical_align,
|
62
|
+
x: x,
|
63
|
+
y: y,
|
48
64
|
}
|
49
65
|
end
|
50
66
|
|
@@ -5,6 +5,7 @@ import { deprecatedProps, GlobalProps, globalProps } from '../utilities/globalPr
|
|
5
5
|
|
6
6
|
type TitleProps = {
|
7
7
|
aria?: {[key: string]: string},
|
8
|
+
bold?: boolean,
|
8
9
|
children?: React.ReactChild[] | React.ReactChild,
|
9
10
|
className?: string,
|
10
11
|
color?: "default" | "light" | "lighter" | "success" | "error" | "link",
|
@@ -20,6 +21,7 @@ const Title = (props: TitleProps): React.ReactElement => {
|
|
20
21
|
if (props.variant) deprecatedProps('Title', ['variant']) //variant prop is deprecated, use color instead
|
21
22
|
const {
|
22
23
|
aria = {},
|
24
|
+
bold = true,
|
23
25
|
children,
|
24
26
|
className,
|
25
27
|
color,
|
@@ -33,8 +35,9 @@ const Title = (props: TitleProps): React.ReactElement => {
|
|
33
35
|
|
34
36
|
const ariaProps: {[key: string]: string | number} = buildAriaProps(aria)
|
35
37
|
const dataProps: {[key: string]: string | number} = buildDataProps(data)
|
38
|
+
const getBold = bold ? '' : 'thin'
|
36
39
|
const classes = classnames(
|
37
|
-
buildCss('pb_title_kit', `size_${size}`, variant, color),
|
40
|
+
buildCss('pb_title_kit', `size_${size}`, variant, color, getBold),
|
38
41
|
globalProps(props),
|
39
42
|
className,
|
40
43
|
)
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
<br/>
|
7
7
|
|
8
|
-
<%= pb_rails("title", props: { text: "Title 4", tag: "h4", size: 4 }) %>
|
9
|
-
<%= pb_rails("title", props: { text: "Title 3", tag: "h3", size: 3 }) %>
|
10
|
-
<%= pb_rails("title", props: { text: "Title 2", tag: "h2", size: 2 }) %>
|
11
8
|
<%= pb_rails("title", props: { text: "Title 1", tag: "h1", size: 1 }) %>
|
9
|
+
<%= pb_rails("title", props: { text: "Title 2", tag: "h2", size: 2 }) %>
|
10
|
+
<%= pb_rails("title", props: { text: "Title 3", tag: "h3", size: 3 }) %>
|
11
|
+
<%= pb_rails("title", props: { text: "Title 4", tag: "h4", size: 4 }) %>
|
@@ -2,7 +2,7 @@ import React from 'react'
|
|
2
2
|
|
3
3
|
import Title from '../_title'
|
4
4
|
|
5
|
-
const
|
5
|
+
const TitleDefault = (props) => {
|
6
6
|
return (
|
7
7
|
<div>
|
8
8
|
<Title
|
@@ -11,15 +11,9 @@ const TitleLight = (props) => {
|
|
11
11
|
/>
|
12
12
|
<br />
|
13
13
|
<Title
|
14
|
-
size={
|
15
|
-
tag="
|
16
|
-
text="Title
|
17
|
-
{...props}
|
18
|
-
/>
|
19
|
-
<Title
|
20
|
-
size={3}
|
21
|
-
tag="h3"
|
22
|
-
text="Title 3"
|
14
|
+
size={1}
|
15
|
+
tag="h1"
|
16
|
+
text="Title 1"
|
23
17
|
{...props}
|
24
18
|
/>
|
25
19
|
<Title
|
@@ -29,13 +23,19 @@ const TitleLight = (props) => {
|
|
29
23
|
{...props}
|
30
24
|
/>
|
31
25
|
<Title
|
32
|
-
size={
|
33
|
-
tag="
|
34
|
-
text="Title
|
26
|
+
size={3}
|
27
|
+
tag="h3"
|
28
|
+
text="Title 3"
|
29
|
+
{...props}
|
30
|
+
/>
|
31
|
+
<Title
|
32
|
+
size={4}
|
33
|
+
tag="h4"
|
34
|
+
text="Title 4"
|
35
35
|
{...props}
|
36
36
|
/>
|
37
37
|
</div>
|
38
38
|
)
|
39
39
|
}
|
40
40
|
|
41
|
-
export default
|
41
|
+
export default TitleDefault
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= pb_rails("title", props: { text: "Title 1", tag: "h1", size: 1, bold: false }) %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
|
3
|
+
import Title from '../_title'
|
4
|
+
|
5
|
+
const TitleLightWeight = (props) => {
|
6
|
+
return (
|
7
|
+
<div>
|
8
|
+
<Title
|
9
|
+
bold={false}
|
10
|
+
size={1}
|
11
|
+
tag="h1"
|
12
|
+
text="Title 1"
|
13
|
+
{...props}
|
14
|
+
/>
|
15
|
+
</div>
|
16
|
+
)
|
17
|
+
}
|
18
|
+
|
19
|
+
export default TitleLightWeight
|
@@ -0,0 +1,4 @@
|
|
1
|
+
##### Prop
|
2
|
+
Title `size 1` will use `font-weight: 700` by default, if you want a lighter font weight, use the `bold` prop set to `false`.
|
3
|
+
Title `size 2` & `size 3` uses a light font weight by default and will not accept a bold font weight.
|
4
|
+
Title `size 4` uses a heavy font weight by default and will not accept a lighter font weight.
|