playbook_ui 14.22.0 → 14.23.0.pre.alpha.PLAY2243customindeterminatemaincheckboxlabels9046

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 (126) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/CustomCell.tsx +6 -7
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/SubRowHeaderRow.tsx +32 -11
  4. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +2 -2
  5. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +5 -0
  6. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +6 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_sort.jsx +65 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_sort.md +5 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.jsx +69 -0
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.md +1 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +11 -8
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +2 -2
  14. data/app/pb_kits/playbook/pb_badge/_badge.scss +5 -6
  15. data/app/pb_kits/playbook/pb_bar_graph/barGraphTheme.ts +106 -0
  16. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_colors.jsx +33 -15
  17. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_default.jsx +33 -15
  18. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_height.jsx +52 -22
  19. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_height.md +3 -0
  20. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_horizontal.jsx +12 -16
  21. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend.jsx +31 -15
  22. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_non_clickable.jsx +39 -16
  23. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.jsx +86 -38
  24. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_negative_numbers.jsx +32 -15
  25. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_secondary_y_axis.jsx +72 -22
  26. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_secondary_y_axis.md +1 -1
  27. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_spline.jsx +31 -15
  28. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_stacked.jsx +37 -16
  29. data/app/pb_kits/playbook/pb_bar_graph/docs/_description.md +1 -3
  30. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +1 -3
  31. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +0 -2
  32. data/app/pb_kits/playbook/pb_body/docs/_body_truncate.jsx +3 -3
  33. data/app/pb_kits/playbook/pb_body/docs/_body_truncate_react.md +4 -0
  34. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +12 -1
  35. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.html.erb +1 -1
  36. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate_rails.md +2 -1
  37. data/app/pb_kits/playbook/pb_checkbox/index.js +3 -1
  38. data/app/pb_kits/playbook/pb_circle_chart/circleChartTheme.ts +36 -1
  39. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.jsx +71 -26
  40. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.jsx +29 -16
  41. data/app/pb_kits/playbook/pb_circle_chart/docs/{_circle_chart_colors.md → _circle_chart_colors_rails.md} +1 -1
  42. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors_react.md +2 -0
  43. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.jsx +28 -16
  44. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.md +4 -2
  45. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.jsx +23 -15
  46. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_inner_sizes.jsx +81 -51
  47. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +103 -75
  48. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.md +3 -6
  49. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_live_data.jsx +19 -13
  50. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.jsx +30 -17
  51. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_labels.jsx +34 -20
  52. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_legend_kit.jsx +29 -20
  53. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_title.jsx +28 -20
  54. data/app/pb_kits/playbook/pb_circle_chart/docs/_description.md +1 -0
  55. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +0 -1
  56. data/app/pb_kits/playbook/pb_circle_chart/docs/index.js +0 -1
  57. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +12 -4
  58. data/app/pb_kits/playbook/pb_draggable/context/types.ts +5 -2
  59. data/app/pb_kits/playbook/pb_gauge/docs/_description.md +1 -0
  60. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx +32 -15
  61. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors_react.md +2 -0
  62. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex.jsx +35 -9
  63. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex_react.md +1 -0
  64. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx +26 -14
  65. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_disable_animation.jsx +32 -15
  66. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.jsx +45 -17
  67. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.jsx +59 -22
  68. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_live_data.jsx +40 -9
  69. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.jsx +50 -18
  70. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.jsx +31 -18
  71. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.jsx +34 -17
  72. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.jsx +64 -23
  73. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units_react.md +1 -0
  74. data/app/pb_kits/playbook/pb_gauge/docs/example.yml +0 -1
  75. data/app/pb_kits/playbook/pb_gauge/docs/index.js +0 -1
  76. data/app/pb_kits/playbook/pb_gauge/gaugeTheme.ts +7 -1
  77. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +27 -17
  78. data/app/pb_kits/playbook/pb_table/_table.tsx +4 -4
  79. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns.jsx +8 -8
  80. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns_react.md +1 -1
  81. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.jsx +12 -12
  82. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_react.md +3 -3
  83. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns.jsx +12 -12
  84. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns_react.md +3 -3
  85. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +1 -0
  86. data/app/pb_kits/playbook/pb_title/docs/_title_truncate.jsx +3 -3
  87. data/app/pb_kits/playbook/pb_title/docs/_title_truncate_react.md +4 -0
  88. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_click_open.html.erb +14 -0
  89. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_click_open_rails.md +1 -0
  90. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +1 -0
  91. data/app/pb_kits/playbook/pb_tooltip/index.js +59 -36
  92. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +9 -2
  93. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input.html.erb +18 -0
  94. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input_rails.md +1 -0
  95. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +1 -0
  96. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +3 -0
  97. data/dist/chunks/_gauge-BUpiCaK5.js +1 -0
  98. data/dist/chunks/_typeahead-ITbXBlyi.js +6 -0
  99. data/dist/chunks/_weekday_stacked-BIEMUAn8.js +61 -0
  100. data/dist/chunks/lib-AStGp3dD.js +29 -0
  101. data/dist/chunks/{pb_form_validation-Dx1C9XCK.js → pb_form_validation-DF742j1h.js} +1 -1
  102. data/dist/chunks/vendor.js +1 -1
  103. data/dist/menu.yml +68 -8
  104. data/dist/playbook-doc.js +2 -2
  105. data/dist/playbook-rails-react-bindings.js +1 -1
  106. data/dist/playbook-rails.js +1 -1
  107. data/dist/playbook.css +1 -1
  108. data/lib/playbook/version.rb +2 -2
  109. metadata +32 -21
  110. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.jsx +0 -72
  111. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.md +0 -6
  112. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +0 -64
  113. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +0 -1
  114. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.jsx +0 -38
  115. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.md +0 -1
  116. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.jsx +0 -30
  117. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.md +0 -1
  118. data/dist/chunks/_typeahead-dOC1gq2X.js +0 -22
  119. data/dist/chunks/_weekday_stacked-Bh8iY5uA.js +0 -45
  120. data/dist/chunks/lib-DtCftrUN.js +0 -29
  121. /data/app/pb_kits/playbook/pb_body/docs/{_body_truncate.md → _body_truncate_rails.md} +0 -0
  122. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_colors.md → _gauge_colors_rails.md} +0 -0
  123. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_complex.md → _gauge_complex_rails.md} +0 -0
  124. /data/app/pb_kits/playbook/pb_title/docs/{_title_truncate.md → _title_truncate_rails.md} +0 -0
  125. /data/app/pb_kits/playbook/pb_tooltip/docs/{_tooltip_click_open.md → _tooltip_click_open_react.md} +0 -0
  126. /data/app/pb_kits/playbook/pb_typeahead/docs/{_typeahead_preserve_input.md → _typeahead_preserve_input_react.md} +0 -0
@@ -1,15 +1,31 @@
1
- import React, { useState } from 'react'
2
-
1
+ import React, { useState, useRef } from 'react'
3
2
  import Button from '../../pb_button/_button'
4
- import Gauge from '../../pb_gauge/_gauge'
3
+ import gaugeTheme from '../gaugeTheme'
4
+ import Highcharts from "highcharts"
5
+ import HighchartsReact from "highcharts-react-official"
6
+ import HighchartsMore from "highcharts/highcharts-more"
7
+ import SolidGauge from "highcharts/modules/solid-gauge"
8
+
9
+ HighchartsMore(Highcharts);
10
+ SolidGauge(Highcharts);
5
11
 
6
12
  const GaugeLiveData = (props) => {
7
13
  const [value, setValue] = useState(50)
8
14
  const [name, setName] = useState('Name')
15
+ const chartRef = useRef(null)
16
+
17
+ const namesArray = ['Name', 'Windows', 'Doors', 'Roofing', 'Siding', 'Gutters']
9
18
 
10
19
  const updateValue = () => {
11
- setValue(Math.floor(Math.random() * 100))
20
+ const newValue = Math.floor(Math.random() * 100)
21
+ setValue(newValue)
22
+
23
+ const chart = chartRef.current?.chart
24
+ if (chart) {
25
+ chart.series[0].points[0].update(newValue)
26
+ }
12
27
  }
28
+
13
29
  const updateName = () => {
14
30
  let index = namesArray.indexOf(name)
15
31
  if (namesArray.indexOf(name) == 5) {
@@ -18,8 +34,23 @@ const GaugeLiveData = (props) => {
18
34
  index += 1
19
35
  }
20
36
  setName(namesArray[index])
37
+
38
+ const chart = chartRef.current?.chart
39
+ if (chart) {
40
+ chart.series[0].points[0].update({ name: namesArray[index] })
41
+ }
21
42
  }
22
- const namesArray = ['Name', 'Windows', 'Doors', 'Roofing', 'Siding', 'Gutters']
43
+
44
+ const options = Highcharts.merge({}, gaugeTheme,
45
+ {
46
+ title: {
47
+ text: name,
48
+ },
49
+ series: [{
50
+ data: [{ name: name, y: value }]
51
+ }]
52
+ }
53
+ )
23
54
 
24
55
  return (
25
56
  <div>
@@ -33,10 +64,10 @@ const GaugeLiveData = (props) => {
33
64
  text="Update Name"
34
65
  {...props}
35
66
  />
36
- <Gauge
37
- chartData={[{ name: name, value: value }]}
38
- id="gauge-live-data"
39
- {...props}
67
+ <HighchartsReact
68
+ highcharts={Highcharts}
69
+ options={options}
70
+ ref={chartRef}
40
71
  />
41
72
  </div>
42
73
  )
@@ -1,22 +1,54 @@
1
1
  import React from 'react'
2
- import Gauge from '../../pb_gauge/_gauge'
2
+ import gaugeTheme from '../gaugeTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
5
+ import HighchartsMore from "highcharts/highcharts-more"
6
+ import SolidGauge from "highcharts/modules/solid-gauge"
7
+ import colors from '../../tokens/exports/_colors.module.scss'
8
+ import typography from '../../tokens/exports/_typography.module.scss'
3
9
 
4
- const data = [{
5
- name: 'Rating', value: 4.5,
6
- }]
10
+ HighchartsMore(Highcharts);
11
+ SolidGauge(Highcharts);
7
12
 
8
- const GaugeMinMax = (props) => (
9
- <div>
10
- <Gauge
11
- chartData={data}
12
- id="gauge-min-max"
13
- max={5}
14
- min={0}
15
- showLabels
16
- title="Product Rating"
17
- {...props}
18
- />
19
- </div>
20
- )
13
+ const data = [{ name: "Rating", y: 4.5 }]
21
14
 
22
- export default GaugeMinMax
15
+ const baseOptions = {
16
+ title: {
17
+ text: "Product Rating",
18
+ },
19
+ yAxis: {
20
+ min: 0,
21
+ max: 5,
22
+ lineWidth: 0,
23
+ tickWidth: 0,
24
+ minorTickInterval: null,
25
+ tickAmount: 2,
26
+ tickPositions: [0, 5],
27
+ labels: {
28
+ y: 26,
29
+ enabled: true,
30
+ style: {
31
+ color: colors.neutral,
32
+ fontFamily: typography.font_family_base,
33
+ fontWeight: typography.bold,
34
+ }
35
+ },
36
+ },
37
+ series: [{ data: data }],
38
+ };
39
+
40
+ const GaugeMinMax = () => {
41
+ const options = Highcharts.merge({}, gaugeTheme, baseOptions);
42
+
43
+ return (
44
+ <div>
45
+ <HighchartsReact
46
+ highcharts={Highcharts}
47
+ id="gauge-min-max"
48
+ options={options}
49
+ />
50
+ </div>
51
+ );
52
+ };
53
+
54
+ export default GaugeMinMax;
@@ -2,7 +2,14 @@ import React from 'react'
2
2
 
3
3
  import Flex from '../../pb_flex/_flex'
4
4
  import FlexItem from '../../pb_flex/_flex_item'
5
- import Gauge from '../../pb_gauge/_gauge'
5
+ import gaugeTheme from '../gaugeTheme'
6
+ import Highcharts from "highcharts"
7
+ import HighchartsReact from "highcharts-react-official"
8
+ import HighchartsMore from "highcharts/highcharts-more"
9
+ import SolidGauge from "highcharts/modules/solid-gauge"
10
+
11
+ HighchartsMore(Highcharts);
12
+ SolidGauge(Highcharts);
6
13
 
7
14
  const GaugeSizing = (props) => (
8
15
  <div>
@@ -17,10 +24,11 @@ const GaugeSizing = (props) => (
17
24
  shrink
18
25
  {...props}
19
26
  >
20
- <Gauge
21
- chartData={[ { name: 'Point 1', value: 100 } ]}
22
- id="gauge-sizing4"
23
- {...props}
27
+ <HighchartsReact
28
+ highcharts={Highcharts}
29
+ options={Highcharts.merge({}, gaugeTheme, {
30
+ series: [{ data: [{ name: "Point 1", y: 100 }] }],
31
+ })}
24
32
  />
25
33
  </FlexItem>
26
34
  <FlexItem
@@ -29,10 +37,11 @@ const GaugeSizing = (props) => (
29
37
  shrink
30
38
  {...props}
31
39
  >
32
- <Gauge
33
- chartData={[ { name: 'Point 2', value: 75 } ]}
34
- id="gauge-sizing3"
35
- {...props}
40
+ <HighchartsReact
41
+ highcharts={Highcharts}
42
+ options={Highcharts.merge({}, gaugeTheme, {
43
+ series: [{ data: [{ name: "Point 2", y: 75 }] }],
44
+ })}
36
45
  />
37
46
  </FlexItem>
38
47
  <FlexItem
@@ -41,10 +50,11 @@ const GaugeSizing = (props) => (
41
50
  shrink
42
51
  {...props}
43
52
  >
44
- <Gauge
45
- chartData={[ { name: 'Point 3', value: 50 } ]}
46
- id="gauge-sizing2"
47
- {...props}
53
+ <HighchartsReact
54
+ highcharts={Highcharts}
55
+ options={Highcharts.merge({}, gaugeTheme, {
56
+ series: [{ data: [{ name: "Point 3", y: 50 }] }],
57
+ })}
48
58
  />
49
59
  </FlexItem>
50
60
  <FlexItem
@@ -53,11 +63,14 @@ const GaugeSizing = (props) => (
53
63
  shrink
54
64
  {...props}
55
65
  >
56
- <Gauge
57
- chartData={[ { name: 'Point 4', value: 25 } ]}
58
- height="100%"
59
- id="gauge-sizing1"
60
- {...props}
66
+ <HighchartsReact
67
+ highcharts={Highcharts}
68
+ options={Highcharts.merge({}, gaugeTheme, {
69
+ chart: {
70
+ height: "100%",
71
+ },
72
+ series: [{ data: [{ name: "Point 4", y: 25 }] }],
73
+ })}
61
74
  />
62
75
  </FlexItem>
63
76
  </Flex>
@@ -1,21 +1,38 @@
1
1
  import React from 'react'
2
- import Gauge from '../../pb_gauge/_gauge'
2
+ import gaugeTheme from '../gaugeTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
5
+ import HighchartsMore from "highcharts/highcharts-more"
6
+ import SolidGauge from "highcharts/modules/solid-gauge"
3
7
 
4
- const data = [
5
- { name: 'Score', value: 780 },
6
- ]
8
+ HighchartsMore(Highcharts);
9
+ SolidGauge(Highcharts);
7
10
 
8
- const GaugeTitle = (props) => (
9
- <div>
10
- <Gauge
11
- chartData={data}
12
- id="gauge-title"
13
- max={850}
14
- min={300}
15
- title="Credit Score"
16
- {...props}
17
- />
18
- </div>
19
- )
11
+ const data = [{ name: "Score", y: 780 }]
20
12
 
21
- export default GaugeTitle
13
+ const baseOptions = {
14
+ title: {
15
+ text: "Credit Score",
16
+ },
17
+ yAxis: {
18
+ min: 300,
19
+ max: 850,
20
+ },
21
+ series: [{ data: data }],
22
+ };
23
+
24
+ const GaugeTitle = () => {
25
+ const options = Highcharts.merge({}, gaugeTheme, baseOptions);
26
+
27
+ return (
28
+ <div>
29
+ <HighchartsReact
30
+ highcharts={Highcharts}
31
+ id="gauge-title"
32
+ options={options}
33
+ />
34
+ </div>
35
+ );
36
+ };
37
+
38
+ export default GaugeTitle;
@@ -1,31 +1,72 @@
1
1
  import React from 'react'
2
- import Gauge from '../../pb_gauge/_gauge'
2
+ import gaugeTheme from '../gaugeTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
5
+ import HighchartsMore from "highcharts/highcharts-more"
6
+ import SolidGauge from "highcharts/modules/solid-gauge"
7
+ import colors from '../../tokens/exports/_colors.module.scss'
8
+ import typography from '../../tokens/exports/_typography.module.scss'
9
+
10
+ HighchartsMore(Highcharts);
11
+ SolidGauge(Highcharts);
3
12
 
4
13
  const data1 = [
5
- { name: 'Data Used', value: 32 },
14
+ { name: 'Data Used', y: 32 },
6
15
  ]
7
16
  const data2 = [
8
- { name: 'Sales to Date', value: 65 },
17
+ { name: 'Sales to Date', y: 65 },
9
18
  ]
10
19
 
11
- const GaugeUnits = (props) => (
12
- <div>
13
- <Gauge
14
- chartData={data1}
15
- id="gauge-units1"
16
- suffix="GB"
17
- title="Data Usage"
18
- {...props}
19
- />
20
- <Gauge
21
- chartData={data2}
22
- id="gauge-units2"
23
- prefix="$"
24
- suffix="k"
25
- title="Sales Goal"
26
- {...props}
27
- />
28
- </div>
29
- )
20
+ const baseOptions1 = {
21
+ title: {
22
+ text: "Data Usage",
23
+ },
24
+ series: [{ data: data1 }],
25
+ plotOptions: {
26
+ solidgauge: {
27
+ dataLabels: {
28
+ format:
29
+ `<span class="fix">{y:,f}</span>` +
30
+ `<span style="fill: ${colors.text_lt_light}; font-size: ${typography.text_larger};">GB</span>`,
31
+ },
32
+ },
33
+ },
34
+ };
35
+ const baseOptions2 = {
36
+ title: {
37
+ text: "Sales Goal",
38
+ },
39
+ series: [{ data: data2 }],
40
+ plotOptions: {
41
+ solidgauge: {
42
+ dataLabels: {
43
+ format:
44
+ `<span y="28" style="fill: ${colors.text_lt_light}; font-size: ${typography.text_base};">$</span>` +
45
+ `<span class="fix" y="38">{y:,f}</span>` +
46
+ `<span style="fill: ${colors.text_lt_light}; font-size: ${typography.text_larger};">k</span>`,
47
+ },
48
+ },
49
+ },
50
+ };
51
+
52
+ const GaugeUnits = () => {
53
+ const options1 = Highcharts.merge({}, gaugeTheme, baseOptions1);
54
+ const options2 = Highcharts.merge({}, gaugeTheme, baseOptions2);
55
+
56
+ return (
57
+ <div>
58
+ <HighchartsReact
59
+ highcharts={Highcharts}
60
+ id="gauge-units1"
61
+ options={options1}
62
+ />
63
+ <HighchartsReact
64
+ highcharts={Highcharts}
65
+ id="gauge-units2"
66
+ options={options2}
67
+ />
68
+ </div>
69
+ );
70
+ };
30
71
 
31
- export default GaugeUnits
72
+ export default GaugeUnits;
@@ -0,0 +1 @@
1
+ Use custom CSS with classes or inline styles (as shown in these docs) to customize the appearance of prefix and suffix units.
@@ -15,7 +15,6 @@ examples:
15
15
 
16
16
  react:
17
17
  - gauge_default: Default
18
- - gauge_pb_styles: Playbook Styles
19
18
  - gauge_disable_animation: Disable Animation
20
19
  - gauge_title: Title
21
20
  - gauge_units: Units
@@ -1,5 +1,4 @@
1
1
  export { default as GaugeDefault } from './_gauge_default.jsx'
2
- export { default as GaugePbStyles } from './_gauge_pb_styles.jsx'
3
2
  export { default as GaugeDisableAnimation } from './_gauge_disable_animation.jsx'
4
3
  export { default as GaugeFullCircle } from './_gauge_full_circle.jsx'
5
4
  export { default as GaugeHeight } from './_gauge_height.jsx'
@@ -2,7 +2,13 @@ import colors from '../tokens/exports/_colors.module.scss'
2
2
  import typography from '../tokens/exports/_typography.module.scss'
3
3
 
4
4
  const gaugeTheme = {
5
- title: { text: "" },
5
+ title: {
6
+ text: "",
7
+ style: {
8
+ fontFamily: typography.font_family_base,
9
+ fontSize: typography.text_larger,
10
+ },
11
+ },
6
12
  chart: {
7
13
  type: "solidgauge",
8
14
  events: {
@@ -68,7 +68,7 @@ const containOnlyNumbers = (value: string) => {
68
68
  return /^[()+\-\ .\d]*$/g.test(value)
69
69
  }
70
70
 
71
- const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefObject<unknown>) => {
71
+ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>) => {
72
72
  const {
73
73
  aria = {},
74
74
  className,
@@ -106,15 +106,16 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
106
106
  className
107
107
  )
108
108
 
109
- const inputRef = useRef<HTMLInputElement>()
109
+ const inputRef = useRef<HTMLInputElement | null>(null)
110
110
  const itiRef = useRef<any>(null);
111
111
  const [inputValue, setInputValue] = useState(value)
112
112
  const [error, setError] = useState(props.error)
113
113
  const [dropDownIsOpen, setDropDownIsOpen] = useState(false)
114
114
  const [selectedData, setSelectedData] = useState()
115
+ const [hasTyped, setHasTyped] = useState(false)
115
116
 
116
117
  useEffect(() => {
117
- if (error?.length > 0) {
118
+ if ((error ?? '').length > 0) {
118
119
  onValidate(false)
119
120
  } else {
120
121
  onValidate(true)
@@ -131,6 +132,7 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
131
132
  clearField() {
132
133
  setInputValue("")
133
134
  setError("")
135
+ setHasTyped(false)
134
136
  },
135
137
  inputNode() {
136
138
  return inputRef.current
@@ -201,6 +203,8 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
201
203
  }
202
204
 
203
205
  const validateErrors = () => {
206
+ if (!hasTyped && !error) return
207
+
204
208
  if (itiRef.current) isValid(itiRef.current.isValidNumber())
205
209
  if (validateOnlyNumbers(itiRef.current)) return
206
210
  if (validateTooLongNumber(itiRef.current)) return
@@ -214,6 +218,7 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
214
218
  }
215
219
 
216
220
  const handleOnChange = (evt: React.ChangeEvent<HTMLInputElement>) => {
221
+ if (!hasTyped) setHasTyped(true)
217
222
  setInputValue(evt.target.value)
218
223
  let phoneNumberData
219
224
  if (formatAsYouType) {
@@ -259,16 +264,17 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
259
264
 
260
265
  itiRef.current = telInputInit;
261
266
 
262
- inputRef.current.addEventListener("countrychange", (evt: Event) => {
263
- const phoneNumberData = getCurrentSelectedData(telInputInit, (evt.target as HTMLInputElement).value)
264
- setSelectedData(phoneNumberData)
265
- onChange(phoneNumberData)
266
- validateErrors()
267
- })
268
-
269
- inputRef.current.addEventListener("open:countrydropdown", () => setDropDownIsOpen(true))
270
- inputRef.current.addEventListener("close:countrydropdown", () => setDropDownIsOpen(false))
267
+ if (inputRef.current) {
268
+ inputRef.current.addEventListener("countrychange", (evt: Event) => {
269
+ const phoneNumberData = getCurrentSelectedData(telInputInit, (evt.target as HTMLInputElement).value)
270
+ setSelectedData(phoneNumberData)
271
+ onChange(phoneNumberData)
272
+ validateErrors()
273
+ })
271
274
 
275
+ inputRef.current.addEventListener("open:countrydropdown", () => setDropDownIsOpen(true))
276
+ inputRef.current.addEventListener("close:countrydropdown", () => setDropDownIsOpen(false))
277
+ }
272
278
  if (formatAsYouType) {
273
279
  inputRef.current?.addEventListener("input", (evt) => {
274
280
  handleOnChange(evt as unknown as React.ChangeEvent<HTMLInputElement>);
@@ -303,12 +309,16 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
303
309
  {...htmlProps}
304
310
  >
305
311
  <TextInput
306
- ref={
307
- inputNode => {
308
- ref ? ref.current = inputNode : null
309
- inputRef.current = inputNode
312
+ ref={inputNode => {
313
+ if (ref) {
314
+ if (typeof ref === 'function') {
315
+ ref(inputNode)
316
+ } else {
317
+ (ref as React.MutableRefObject<HTMLInputElement | null>).current = inputNode
318
+ }
310
319
  }
311
- }
320
+ inputRef.current = inputNode
321
+ }}
312
322
  {...textInputProps}
313
323
  />
314
324
  </div>
@@ -104,8 +104,8 @@ const Table = (props: TableProps): React.ReactElement => {
104
104
 
105
105
  stickyLeftColumn.forEach((colId, index) => {
106
106
  const isLastColumn = index === stickyLeftColumn.length - 1;
107
- const header = document.querySelector(`th[id="${colId}"]`);
108
- const cells = document.querySelectorAll(`td[id="${colId}"]`);
107
+ const header = document.querySelector(`th[data-sticky-id="${colId}"]`);
108
+ const cells = document.querySelectorAll(`td[data-sticky-id="${colId}"]`);
109
109
 
110
110
  if (header) {
111
111
  header.classList.add('sticky');
@@ -155,8 +155,8 @@ const Table = (props: TableProps): React.ReactElement => {
155
155
 
156
156
  stickyRightColumnReversed.forEach((colId, index) => {
157
157
  const isLastColumn = index === stickyRightColumn.length - 1;
158
- const header = document.querySelector(`th[id="${colId}"]`);
159
- const cells = document.querySelectorAll(`td[id="${colId}"]`);
158
+ const header = document.querySelector(`th[data-sticky-id="${colId}"]`);
159
+ const cells = document.querySelectorAll(`td[data-sticky-id="${colId}"]`);
160
160
 
161
161
  if (header) {
162
162
  header.classList.add('sticky');
@@ -11,7 +11,7 @@ const TableStickyColumns = () => {
11
11
  >
12
12
  <thead>
13
13
  <tr>
14
- <th id="a">{'Column 1'}</th>
14
+ <th data-sticky-id="a">{'Column 1'}</th>
15
15
  <th>{'Column 2'}</th>
16
16
  <th>{'Column 3'}</th>
17
17
  <th>{'Column 4'}</th>
@@ -25,12 +25,12 @@ const TableStickyColumns = () => {
25
25
  <th>{'Column 12'}</th>
26
26
  <th>{'Column 13'}</th>
27
27
  <th>{'Column 14'}</th>
28
- <th id="b">{'Column 15'}</th>
28
+ <th data-sticky-id="b">{'Column 15'}</th>
29
29
  </tr>
30
30
  </thead>
31
31
  <tbody>
32
32
  <tr>
33
- <td id="a">{'Value 1'}</td>
33
+ <td data-sticky-id="a">{'Value 1'}</td>
34
34
  <td>{'Value 2'}</td>
35
35
  <td>{'Value 3'}</td>
36
36
  <td>{'Value 4'}</td>
@@ -44,10 +44,10 @@ const TableStickyColumns = () => {
44
44
  <td>{'Value 12'}</td>
45
45
  <td>{'Value 13'}</td>
46
46
  <td>{'Value 14'}</td>
47
- <td id="b">{'Value 15'}</td>
47
+ <td data-sticky-id="b">{'Value 15'}</td>
48
48
  </tr>
49
49
  <tr>
50
- <td id="a">{'Value 1'}</td>
50
+ <td data-sticky-id="a">{'Value 1'}</td>
51
51
  <td>{'Value 2'}</td>
52
52
  <td>{'Value 3'}</td>
53
53
  <td>{'Value 4'}</td>
@@ -61,10 +61,10 @@ const TableStickyColumns = () => {
61
61
  <td>{'Value 12'}</td>
62
62
  <td>{'Value 13'}</td>
63
63
  <td>{'Value 14'}</td>
64
- <td id="b">{'Value 15'}</td>
64
+ <td data-sticky-id="b">{'Value 15'}</td>
65
65
  </tr>
66
66
  <tr>
67
- <td id="a">{'Value 1'}</td>
67
+ <td data-sticky-id="a">{'Value 1'}</td>
68
68
  <td>{'Value 2'}</td>
69
69
  <td>{'Value 3'}</td>
70
70
  <td>{'Value 4'}</td>
@@ -78,7 +78,7 @@ const TableStickyColumns = () => {
78
78
  <td>{'Value 12'}</td>
79
79
  <td>{'Value 13'}</td>
80
80
  <td>{'Value 14'}</td>
81
- <td id="b">{'Value 15'}</td>
81
+ <td data-sticky-id="b">{'Value 15'}</td>
82
82
  </tr>
83
83
  </tbody>
84
84
  </Table>
@@ -1,3 +1,3 @@
1
1
  The `stickyLeftColumn` and `stickyRightColumn` props can be used together on the same table as needed.
2
2
 
3
- Please ensure that unique ids are used for all columns across multiple tables. Using the same columns ids on multiple tables can lead to issues when using props.
3
+ Please ensure that unique `data-sticky-id`s are used for all columns across multiple tables. Using the same columns `data-sticky-id`s on multiple tables can lead to issues when using props.
@@ -10,9 +10,9 @@ const TableStickyLeftColumns = () => {
10
10
  >
11
11
  <thead>
12
12
  <tr>
13
- <th id="1">{'Column 1'}</th>
14
- <th id="2">{'Column 2'}</th>
15
- <th id="3">{'Column 3'}</th>
13
+ <th data-sticky-id="1">{'Column 1'}</th>
14
+ <th data-sticky-id="2">{'Column 2'}</th>
15
+ <th data-sticky-id="3">{'Column 3'}</th>
16
16
  <th>{'Column 4'}</th>
17
17
  <th>{'Column 5'}</th>
18
18
  <th>{'Column 6'}</th>
@@ -29,9 +29,9 @@ const TableStickyLeftColumns = () => {
29
29
  </thead>
30
30
  <tbody>
31
31
  <tr>
32
- <td id="1">{'Value 1'}</td>
33
- <td id="2">{'Value 2'}</td>
34
- <td id="3">{'Value 3'}</td>
32
+ <td data-sticky-id="1">{'Value 1'}</td>
33
+ <td data-sticky-id="2">{'Value 2'}</td>
34
+ <td data-sticky-id="3">{'Value 3'}</td>
35
35
  <td>{'Value 4'}</td>
36
36
  <td>{'Value 5'}</td>
37
37
  <td>{'Value 6'}</td>
@@ -46,9 +46,9 @@ const TableStickyLeftColumns = () => {
46
46
  <td>{'Value 15'}</td>
47
47
  </tr>
48
48
  <tr>
49
- <td id="1">{'Value 1'}</td>
50
- <td id="2">{'Value 2'}</td>
51
- <td id="3">{'Value 3'}</td>
49
+ <td data-sticky-id="1">{'Value 1'}</td>
50
+ <td data-sticky-id="2">{'Value 2'}</td>
51
+ <td data-sticky-id="3">{'Value 3'}</td>
52
52
  <td>{'Value 4'}</td>
53
53
  <td>{'Value 5'}</td>
54
54
  <td>{'Value 6'}</td>
@@ -63,9 +63,9 @@ const TableStickyLeftColumns = () => {
63
63
  <td>{'Value 15'}</td>
64
64
  </tr>
65
65
  <tr>
66
- <td id="1">{'Value 1'}</td>
67
- <td id="2">{'Value 2'}</td>
68
- <td id="3">{'Value 3'}</td>
66
+ <td data-sticky-id="1">{'Value 1'}</td>
67
+ <td data-sticky-id="2">{'Value 2'}</td>
68
+ <td data-sticky-id="3">{'Value 3'}</td>
69
69
  <td>{'Value 4'}</td>
70
70
  <td>{'Value 5'}</td>
71
71
  <td>{'Value 6'}</td>