playbook_ui 14.22.0.pre.rc.7 → 14.23.0.pre.alpha.PLAY1985renderpaginationonlywithpages9148

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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/SubRowHeaderRow.tsx +32 -11
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/TableActionBar.tsx +10 -10
  4. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +0 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +3 -3
  6. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +72 -3
  7. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +15 -6
  8. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +1 -1
  9. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +14 -2
  10. data/app/pb_kits/playbook/pb_advanced_table/advanced_table_action_bar.js +16 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_sort.jsx +65 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_sort.md +5 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling.html.erb +46 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling_rails.md +7 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.jsx +69 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.md +1 -0
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header.jsx +107 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header.md +1 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.html.erb +51 -0
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.md +1 -0
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +14 -8
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +3 -0
  23. data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +23 -2
  24. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +3 -1
  25. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +5 -1
  26. data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +36 -0
  27. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +11 -2
  28. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +2 -0
  29. data/app/pb_kits/playbook/pb_badge/_badge.scss +5 -6
  30. data/app/pb_kits/playbook/pb_bar_graph/barGraphTheme.ts +106 -0
  31. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_colors.jsx +33 -15
  32. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_default.jsx +33 -15
  33. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_height.jsx +52 -22
  34. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_height.md +3 -0
  35. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_horizontal.jsx +12 -16
  36. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend.jsx +31 -15
  37. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_non_clickable.jsx +39 -16
  38. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.jsx +86 -38
  39. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.md +1 -1
  40. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_negative_numbers.jsx +32 -15
  41. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_secondary_y_axis.jsx +72 -22
  42. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_secondary_y_axis.md +1 -1
  43. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_spline.jsx +31 -15
  44. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_stacked.jsx +37 -16
  45. data/app/pb_kits/playbook/pb_bar_graph/docs/_description.md +1 -3
  46. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +1 -3
  47. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +0 -2
  48. data/app/pb_kits/playbook/pb_body/docs/_body_truncate.jsx +3 -3
  49. data/app/pb_kits/playbook/pb_body/docs/_body_truncate_react.md +4 -0
  50. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +12 -1
  51. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.html.erb +1 -1
  52. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate_rails.md +2 -1
  53. data/app/pb_kits/playbook/pb_checkbox/index.js +3 -1
  54. data/app/pb_kits/playbook/pb_circle_chart/circleChartTheme.ts +36 -1
  55. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.jsx +71 -26
  56. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.jsx +29 -16
  57. data/app/pb_kits/playbook/pb_circle_chart/docs/{_circle_chart_colors.md → _circle_chart_colors_rails.md} +1 -1
  58. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors_react.md +2 -0
  59. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.jsx +28 -16
  60. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.md +4 -2
  61. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.jsx +23 -15
  62. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_inner_sizes.jsx +81 -51
  63. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +103 -75
  64. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.md +4 -7
  65. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_live_data.jsx +19 -13
  66. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.jsx +30 -17
  67. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_labels.jsx +34 -20
  68. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_legend_kit.jsx +29 -20
  69. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_title.jsx +28 -20
  70. data/app/pb_kits/playbook/pb_circle_chart/docs/_description.md +1 -0
  71. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +0 -1
  72. data/app/pb_kits/playbook/pb_circle_chart/docs/index.js +0 -1
  73. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +12 -4
  74. data/app/pb_kits/playbook/pb_draggable/context/types.ts +5 -2
  75. data/app/pb_kits/playbook/pb_gauge/docs/_description.md +1 -0
  76. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx +32 -15
  77. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors_react.md +2 -0
  78. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex.jsx +35 -9
  79. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex_react.md +1 -0
  80. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx +26 -14
  81. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_disable_animation.jsx +32 -15
  82. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.jsx +45 -17
  83. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.jsx +59 -22
  84. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_live_data.jsx +40 -9
  85. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.jsx +50 -18
  86. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.jsx +31 -18
  87. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.jsx +34 -17
  88. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.jsx +64 -23
  89. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units_react.md +1 -0
  90. data/app/pb_kits/playbook/pb_gauge/docs/example.yml +0 -1
  91. data/app/pb_kits/playbook/pb_gauge/docs/index.js +0 -1
  92. data/app/pb_kits/playbook/pb_gauge/gaugeTheme.ts +7 -1
  93. data/app/pb_kits/playbook/pb_line_graph/docs/_description.md +1 -3
  94. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors.jsx +36 -17
  95. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors_react.md +3 -0
  96. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_default.jsx +31 -16
  97. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.jsx +63 -31
  98. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.md +3 -0
  99. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend.jsx +35 -16
  100. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_nonclickable.jsx +41 -16
  101. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.jsx +107 -62
  102. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.md +4 -7
  103. data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +0 -1
  104. data/app/pb_kits/playbook/pb_line_graph/docs/index.js +0 -1
  105. data/app/pb_kits/playbook/pb_line_graph/lineGraphTheme.ts +16 -1
  106. data/app/pb_kits/playbook/pb_pagination/_pagination.tsx +4 -0
  107. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_default_rails.md +3 -1
  108. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_default_react.md +3 -1
  109. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +30 -17
  110. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.html.erb +10 -0
  111. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.jsx +26 -0
  112. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.md +3 -0
  113. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +2 -0
  114. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +1 -0
  115. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +3 -0
  116. data/app/pb_kits/playbook/pb_table/_table.tsx +4 -4
  117. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns.jsx +8 -8
  118. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns_react.md +1 -1
  119. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.jsx +12 -12
  120. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_react.md +3 -3
  121. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns.jsx +12 -12
  122. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns_react.md +3 -3
  123. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +1 -0
  124. data/app/pb_kits/playbook/pb_title/docs/_title_truncate.jsx +3 -3
  125. data/app/pb_kits/playbook/pb_title/docs/_title_truncate_react.md +4 -0
  126. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_click_open.html.erb +14 -0
  127. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_click_open_rails.md +1 -0
  128. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +1 -0
  129. data/app/pb_kits/playbook/pb_tooltip/index.js +59 -36
  130. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +9 -2
  131. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input.html.erb +18 -0
  132. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input_rails.md +1 -0
  133. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +1 -0
  134. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +3 -0
  135. data/dist/chunks/_line_graph-BfCo79KE.js +1 -0
  136. data/dist/chunks/_typeahead-Db4YQA5c.js +6 -0
  137. data/dist/chunks/_weekday_stacked-Byp3KKop.js +61 -0
  138. data/dist/chunks/lib-DnQyMxO1.js +29 -0
  139. data/dist/chunks/{pb_form_validation-DqRmTS8m.js → pb_form_validation-kl-4Jv4t.js} +1 -1
  140. data/dist/chunks/vendor.js +1 -1
  141. data/dist/menu.yml +68 -8
  142. data/dist/playbook-doc.js +2 -2
  143. data/dist/playbook-rails-react-bindings.js +1 -1
  144. data/dist/playbook-rails.js +1 -1
  145. data/dist/playbook.css +1 -1
  146. data/lib/playbook/version.rb +2 -2
  147. metadata +45 -25
  148. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.jsx +0 -72
  149. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.md +0 -6
  150. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +0 -64
  151. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +0 -1
  152. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.jsx +0 -38
  153. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.md +0 -1
  154. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.jsx +0 -30
  155. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.md +0 -1
  156. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.jsx +0 -52
  157. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.md +0 -1
  158. data/dist/chunks/_typeahead-B7FRYVtS.js +0 -22
  159. data/dist/chunks/_weekday_stacked-B0oaGhTW.js +0 -45
  160. data/dist/chunks/lib-Carqm8Ip.js +0 -29
  161. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_row_styling.md → _advanced_table_row_styling_react.md} +0 -0
  162. /data/app/pb_kits/playbook/pb_body/docs/{_body_truncate.md → _body_truncate_rails.md} +0 -0
  163. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_colors.md → _gauge_colors_rails.md} +0 -0
  164. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_complex.md → _gauge_complex_rails.md} +0 -0
  165. /data/app/pb_kits/playbook/pb_line_graph/docs/{_line_graph_colors.md → _line_graph_colors_rails.md} +0 -0
  166. /data/app/pb_kits/playbook/pb_title/docs/{_title_truncate.md → _title_truncate_rails.md} +0 -0
  167. /data/app/pb_kits/playbook/pb_tooltip/docs/{_tooltip_click_open.md → _tooltip_click_open_react.md} +0 -0
  168. /data/app/pb_kits/playbook/pb_typeahead/docs/{_typeahead_preserve_input.md → _typeahead_preserve_input_react.md} +0 -0
@@ -1,24 +1,43 @@
1
1
  import React from 'react'
2
- import LineGraph from '../../pb_line_graph/_line_graph'
2
+ import lineGraphTheme from '../lineGraphTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
3
5
 
4
6
  const data = [{
5
7
  name: 'Number of Installations',
6
8
  data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],
7
9
  }]
8
10
 
9
- const LineGraphLegend = (props) => (
10
- <div>
11
- <LineGraph
12
- axisTitle="Number of Employees"
13
- chartData={data}
14
- id="line-test-2"
15
- legend
16
- title="Line Graph with Legend"
17
- xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']}
18
- yAxisMin={0}
19
- {...props}
20
- />
21
- </div>
22
- )
11
+ const categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']
23
12
 
24
- export default LineGraphLegend
13
+ const chartOptions = {
14
+ series: data,
15
+ title: { text: "Line Graph with Legend" },
16
+ xAxis: {
17
+ categories: categories,
18
+ },
19
+ yAxis: {
20
+ min: 0,
21
+ title: {
22
+ text: "Number of Employees",
23
+ },
24
+ },
25
+ legend: {
26
+ enabled: true,
27
+ },
28
+ }
29
+
30
+ const LineGraphLegend = () => {
31
+ const options = Highcharts.merge({}, lineGraphTheme, chartOptions)
32
+
33
+ return(
34
+ <div>
35
+ <HighchartsReact
36
+ highcharts={Highcharts}
37
+ options={options}
38
+ />
39
+ </div>
40
+ )
41
+ }
42
+
43
+ export default LineGraphLegend
@@ -1,24 +1,49 @@
1
1
  import React from 'react'
2
- import LineGraph from '../../pb_line_graph/_line_graph'
2
+ import lineGraphTheme from '../lineGraphTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
3
5
 
4
6
  const data = [{
5
7
  name: 'Number of Installations',
6
8
  data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],
7
9
  }]
8
10
 
9
- const LineGraphLegendNonclickable = (props) => (
10
- <div>
11
- <LineGraph
12
- axisTitle="Number of Employees"
13
- chartData={data}
14
- id="line-test-3"
15
- legend
16
- title="Line Graph with Legend Non Clickable"
17
- toggleLegendClick={false}
18
- xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']}
19
- {...props}
20
- />
21
- </div>
22
- )
11
+ const categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']
23
12
 
24
- export default LineGraphLegendNonclickable
13
+ const chartOptions = {
14
+ title: {
15
+ text: 'Line Graph with Legend Non Clickable',
16
+ },
17
+ xAxis: {
18
+ categories: categories,
19
+ },
20
+ yAxis: {
21
+ title: {
22
+ text: 'Number of Employees',
23
+ },
24
+ },
25
+ legend: {
26
+ enabled: true,
27
+ events: {
28
+ itemClick: function () {
29
+ return false;
30
+ }
31
+ }
32
+ },
33
+ series: data
34
+ }
35
+
36
+ const LineGraphLegendNonclickable = () => {
37
+ const options = Highcharts.merge({}, lineGraphTheme, chartOptions)
38
+
39
+ return (
40
+ <div>
41
+ <HighchartsReact
42
+ highcharts={Highcharts}
43
+ options={options}
44
+ />
45
+ </div>
46
+ )
47
+ }
48
+
49
+ export default LineGraphLegendNonclickable
@@ -1,5 +1,7 @@
1
1
  import React from 'react'
2
- import LineGraph from '../../pb_line_graph/_line_graph'
2
+ import lineGraphTheme from '../lineGraphTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
3
5
  import Title from '../../pb_title/_title'
4
6
 
5
7
  const data = [{
@@ -19,66 +21,109 @@ const data = [{
19
21
  data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],
20
22
  }]
21
23
 
22
- const LineGraphLegendPosition = (props) => (
23
- <div>
24
- <Title
25
- paddingBottom="sm"
26
- paddingTop="sm"
27
- size={4}
28
- tag="h4"
29
- text="align | verticalAlign"
30
- />
31
- <LineGraph
32
- align='right'
33
- axisTitle="Number of Employees"
34
- chartData={data}
35
- id="legend-position-line"
36
- legend
37
- title="Alignment of Legend"
38
- verticalAlign="top"
39
- xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']}
40
- yAxisMin={0}
41
- {...props}
42
- />
43
- <Title
44
- paddingBottom="sm"
45
- paddingTop="sm"
46
- size={4}
47
- tag="h4"
48
- text="layout"
49
- />
50
- <LineGraph
51
- axisTitle="Number of Employees"
52
- chartData={data}
53
- id="legend-position-line-1"
54
- layout="vertical"
55
- legend
56
- title="Layout of Legend"
57
- xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']}
58
- yAxisMin={0}
59
- {...props}
60
- />
61
- <Title
62
- paddingBottom="sm"
63
- paddingTop="sm"
64
- size={4}
65
- tag="h4"
66
- text="x | y"
67
- />
68
- <LineGraph
69
- axisTitle="Number of Employees"
70
- chartData={data}
71
- id="legend-position-line-2"
72
- layout="vertical"
73
- legend
74
- title="Offset of Legend"
75
- x={100}
76
- xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']}
77
- y={10}
78
- yAxisMin={0}
79
- {...props}
80
- />
81
- </div>
82
- )
24
+ const categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']
25
+
26
+ const LineGraphLegendPosition = (props) => {
27
+ const chartOptionsFirst = {
28
+ title: { text: "Alignment of Legend" },
29
+ series: data,
30
+ xAxis: {
31
+ categories: categories,
32
+ },
33
+ yAxis: {
34
+ min: 0,
35
+ title: {
36
+ text: "Number of Employees",
37
+ },
38
+ },
39
+ legend: {
40
+ enabled: true,
41
+ align: 'right',
42
+ verticalAlign: 'top'
43
+ },
44
+ }
45
+
46
+ const chartOptionsSecond = {
47
+ title: { text: "Layout of Legend" },
48
+ series: data,
49
+ xAxis: {
50
+ categories: categories,
51
+ },
52
+ yAxis: {
53
+ min: 0,
54
+ title: {
55
+ text: "Number of Employees",
56
+ },
57
+ },
58
+ legend: {
59
+ enabled: true,
60
+ layout: 'vertical'
61
+ },
62
+ }
63
+
64
+ const chartOptionsThird = {
65
+ title: { text: "Offset of Legend" },
66
+ series: data,
67
+ xAxis: {
68
+ categories: categories,
69
+ },
70
+ yAxis: {
71
+ min: 0,
72
+ title: {
73
+ text: "Number of Employees",
74
+ },
75
+ },
76
+ legend: {
77
+ enabled: true,
78
+ layout: 'vertical',
79
+ x: 100,
80
+ y: 10
81
+ },
82
+ }
83
+
84
+ const optionsFirst = Highcharts.merge({}, lineGraphTheme, chartOptionsFirst)
85
+ const optionsSecond = Highcharts.merge({}, lineGraphTheme, chartOptionsSecond)
86
+ const optionsThird = Highcharts.merge({}, lineGraphTheme, chartOptionsThird)
87
+
88
+ return (
89
+ <div>
90
+ <Title
91
+ paddingY="sm"
92
+ size={4}
93
+ tag="h4"
94
+ text="align | verticalAlign"
95
+ {...props}
96
+ />
97
+ <HighchartsReact
98
+ highcharts={Highcharts}
99
+ options={optionsFirst}
100
+ />
101
+
102
+ <Title
103
+ paddingY="sm"
104
+ size={4}
105
+ tag="h4"
106
+ text="layout"
107
+ {...props}
108
+ />
109
+ <HighchartsReact
110
+ highcharts={Highcharts}
111
+ options={optionsSecond}
112
+ />
113
+
114
+ <Title
115
+ paddingY="sm"
116
+ size={4}
117
+ tag="h4"
118
+ text="x | y"
119
+ {...props}
120
+ />
121
+ <HighchartsReact
122
+ highcharts={Highcharts}
123
+ options={optionsThird}
124
+ />
125
+ </div>
126
+ )
127
+ }
83
128
 
84
129
  export default LineGraphLegendPosition
@@ -1,17 +1,14 @@
1
1
  ##### Prop
2
2
 
3
3
  `align` **Type**: String | **Values**: left | center | right (defaults to center)
4
- `verticalAlign` **Type**: String | **Values**: top | middle | bottom (defaults middle)
4
+ `verticalAlign` **Type**: String | **Values**: top | middle | bottom (defaults to bottom)
5
5
  `layout` **Type**: String | **Values**: horizontal | vertical | proximate (defaults to horizontal)
6
6
  `x` **Type**: Number (defaults to 0)
7
7
  `y` **Type**: Number (defaults to 0)
8
8
 
9
- -
10
-
11
- - `layout` determines the position of the legend items
9
+ `layout` determines the position of the legend items
12
10
  `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
11
 
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
-
12
+ `x` offsets the legend relative to its horizontal alignment. Negative x moves it to the left, positive x moves it to the right
16
13
 
17
- - `y` offsets the legend relative to its vertical alignmnet. Negative y moves it up, positive y moves it down.
14
+ `y` offsets the legend relative to its vertical alignment. Negative y moves it up, positive y moves it down.
@@ -11,7 +11,6 @@ examples:
11
11
 
12
12
  react:
13
13
  - line_graph_default: Default
14
- - line_graph_pb_styles: Playbook Styles
15
14
  - line_graph_legend: Legend
16
15
  - line_graph_legend_position: Legend Position
17
16
  - line_graph_legend_nonclickable: Legend Nonclickable
@@ -4,4 +4,3 @@ export { default as LineGraphLegendPosition } from './_line_graph_legend_positio
4
4
  export { default as LineGraphLegendNonclickable } from './_line_graph_legend_nonclickable.jsx'
5
5
  export { default as LineGraphHeight } from './_line_graph_height.jsx'
6
6
  export { default as LineGraphColors } from './_line_graph_colors.jsx'
7
- export { default as LineGraphPbStyles } from './_line_graph_pb_styles.jsx'
@@ -50,7 +50,21 @@ const lineGraphTheme = {
50
50
  },
51
51
  },
52
52
  credits: { enabled: false },
53
- legend: { enabled: false },
53
+ legend: {
54
+ enabled: false,
55
+ itemStyle: {
56
+ fontFamily: typography.font_family_base,
57
+ color: colors.text_lt_light,
58
+ fontWeight: typography.regular,
59
+ fontSize: typography.text_smaller,
60
+ },
61
+ itemHoverStyle: {
62
+ color: colors.text_lt_default,
63
+ },
64
+ itemHiddenStyle: {
65
+ color: colors.text_lt_lighter,
66
+ },
67
+ },
54
68
  colors: [
55
69
  colors.data_1,
56
70
  colors.data_2,
@@ -88,6 +102,7 @@ const lineGraphTheme = {
88
102
  minorGridLineColor: colors.border_light,
89
103
  lineWidth: 0,
90
104
  tickWidth: 0,
105
+ tickPixelInterval: 50,
91
106
  labels: {
92
107
  style: {
93
108
  fontFamily: typography.font_family_base,
@@ -134,6 +134,10 @@ const Pagination = ( props: PaginationProps) => {
134
134
  className
135
135
  )
136
136
 
137
+ if (total <= 1) {
138
+ return null;
139
+ }
140
+
137
141
  return (
138
142
  <div
139
143
  {...ariaProps}
@@ -3,4 +3,6 @@ Our Pagination kit depends on the <a href="https://github.com/mislav/will_pagina
3
3
 
4
4
  Once you have perfomed the paginated query in your controller file you can use our kit (see code example below) instead of `<%= will_paginate @users %>` in your view file.
5
5
 
6
- You need to add: <code>require "playbook/pagination_renderer"</code> in your apps controller file.
6
+ You need to add: <code>require "playbook/pagination_renderer"</code> in your apps controller file.
7
+
8
+ Note: If the total page count is 0 or 1, the Pagination kit will not be displayed as there aren't multiple pages to navigate.
@@ -1 +1,3 @@
1
- The `range` prop determines how many pages to display in the Pagination component. Regardless of this value, the first two and last two pages are always visible to facilitate navigation to the beginning and end of the pagination. If these always-visible pages fall within the specified range, they are included in the display. If they fall outside the range, the pagination will show additional pages up to the number defined by the `range` prop.
1
+ The `range` prop determines how many pages to display in the Pagination component. Regardless of this value, the first two and last two pages are always visible to facilitate navigation to the beginning and end of the pagination. If these always-visible pages fall within the specified range, they are included in the display. If they fall outside the range, the pagination will show additional pages up to the number defined by the `range` prop.
2
+
3
+ Note: If the `total` pages prop is 0 or 1, the Pagination component will not be displayed, as there aren't multiple pages to navigate.
@@ -38,6 +38,7 @@ type PhoneNumberInputProps = {
38
38
  required?: boolean,
39
39
  value?: string,
40
40
  formatAsYouType?: boolean,
41
+ strictMode?: boolean,
41
42
  countrySearch?: boolean,
42
43
  }
43
44
 
@@ -68,7 +69,7 @@ const containOnlyNumbers = (value: string) => {
68
69
  return /^[()+\-\ .\d]*$/g.test(value)
69
70
  }
70
71
 
71
- const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefObject<unknown>) => {
72
+ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.Ref<unknown>) => {
72
73
  const {
73
74
  aria = {},
74
75
  className,
@@ -94,6 +95,7 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
94
95
  preferredCountries = [],
95
96
  value = "",
96
97
  formatAsYouType = false,
98
+ strictMode = false,
97
99
  countrySearch = false,
98
100
  } = props
99
101
 
@@ -106,15 +108,16 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
106
108
  className
107
109
  )
108
110
 
109
- const inputRef = useRef<HTMLInputElement>()
111
+ const inputRef = useRef<HTMLInputElement | null>(null)
110
112
  const itiRef = useRef<any>(null);
111
113
  const [inputValue, setInputValue] = useState(value)
112
114
  const [error, setError] = useState(props.error)
113
115
  const [dropDownIsOpen, setDropDownIsOpen] = useState(false)
114
116
  const [selectedData, setSelectedData] = useState()
117
+ const [hasTyped, setHasTyped] = useState(false)
115
118
 
116
119
  useEffect(() => {
117
- if (error?.length > 0) {
120
+ if ((error ?? '').length > 0) {
118
121
  onValidate(false)
119
122
  } else {
120
123
  onValidate(true)
@@ -131,6 +134,7 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
131
134
  clearField() {
132
135
  setInputValue("")
133
136
  setError("")
137
+ setHasTyped(false)
134
138
  },
135
139
  inputNode() {
136
140
  return inputRef.current
@@ -201,6 +205,8 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
201
205
  }
202
206
 
203
207
  const validateErrors = () => {
208
+ if (!hasTyped && !error) return
209
+
204
210
  if (itiRef.current) isValid(itiRef.current.isValidNumber())
205
211
  if (validateOnlyNumbers(itiRef.current)) return
206
212
  if (validateTooLongNumber(itiRef.current)) return
@@ -214,6 +220,7 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
214
220
  }
215
221
 
216
222
  const handleOnChange = (evt: React.ChangeEvent<HTMLInputElement>) => {
223
+ if (!hasTyped) setHasTyped(true)
217
224
  setInputValue(evt.target.value)
218
225
  let phoneNumberData
219
226
  if (formatAsYouType) {
@@ -251,6 +258,7 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
251
258
  countrySearch: countrySearch,
252
259
  fixDropdownWidth: false,
253
260
  formatAsYouType: formatAsYouType,
261
+ strictMode: strictMode,
254
262
  hiddenInput: hiddenInputs ? () => ({
255
263
  phone: `${name}_full`,
256
264
  country: `${name}_country_code`,
@@ -259,16 +267,17 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
259
267
 
260
268
  itiRef.current = telInputInit;
261
269
 
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))
270
+ if (inputRef.current) {
271
+ inputRef.current.addEventListener("countrychange", (evt: Event) => {
272
+ const phoneNumberData = getCurrentSelectedData(telInputInit, (evt.target as HTMLInputElement).value)
273
+ setSelectedData(phoneNumberData)
274
+ onChange(phoneNumberData)
275
+ validateErrors()
276
+ })
271
277
 
278
+ inputRef.current.addEventListener("open:countrydropdown", () => setDropDownIsOpen(true))
279
+ inputRef.current.addEventListener("close:countrydropdown", () => setDropDownIsOpen(false))
280
+ }
272
281
  if (formatAsYouType) {
273
282
  inputRef.current?.addEventListener("input", (evt) => {
274
283
  handleOnChange(evt as unknown as React.ChangeEvent<HTMLInputElement>);
@@ -303,12 +312,16 @@ const PhoneNumberInput = (props: PhoneNumberInputProps, ref?: React.MutableRefOb
303
312
  {...htmlProps}
304
313
  >
305
314
  <TextInput
306
- ref={
307
- inputNode => {
308
- ref ? ref.current = inputNode : null
309
- inputRef.current = inputNode
315
+ ref={inputNode => {
316
+ if (ref) {
317
+ if (typeof ref === 'function') {
318
+ ref(inputNode)
319
+ } else {
320
+ (ref as React.MutableRefObject<HTMLInputElement | null>).current = inputNode
321
+ }
310
322
  }
311
- }
323
+ inputRef.current = inputNode
324
+ }}
312
325
  {...textInputProps}
313
326
  />
314
327
  </div>
@@ -0,0 +1,10 @@
1
+ <%= pb_rails("phone_number_input", props: {
2
+ strict_mode: true,
3
+ }) %>
4
+
5
+ <%= pb_rails("body", props: { text: "With format_as_you_type" }) %>
6
+
7
+ <%= pb_rails("phone_number_input", props: {
8
+ strict_mode: true,
9
+ format_as_you_type: true,
10
+ }) %>
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+
3
+ import Body from '../../pb_body/_body'
4
+ import PhoneNumberInput from '../../pb_phone_number_input/_phone_number_input'
5
+
6
+ const PhoneNumberInputStrictMode = (props) => {
7
+
8
+ return (
9
+ <>
10
+ <PhoneNumberInput
11
+ id="strict"
12
+ strictMode
13
+ {...props}
14
+ />
15
+ <Body>With formatAsYouType</Body>
16
+ <PhoneNumberInput
17
+ formatAsYouType
18
+ id="strict"
19
+ strictMode
20
+ {...props}
21
+ />
22
+ </>
23
+ );
24
+ };
25
+
26
+ export default PhoneNumberInputStrictMode;
@@ -0,0 +1,3 @@
1
+ Ignore any irrelevant characters and cap the length at the maximum valid number length.
2
+
3
+ This can be combined with `format_as_you_type` / `formatAsYouType`.
@@ -10,6 +10,7 @@ examples:
10
10
  - phone_number_input_clear_field: Clearing the Input Field
11
11
  - phone_number_input_access_input_element: Accessing the Input Element
12
12
  - phone_number_input_format: Format as You Type
13
+ - phone_number_input_strict_mode: Strict Mode
13
14
  - phone_number_input_country_search: Country Search
14
15
 
15
16
  rails:
@@ -20,5 +21,6 @@ examples:
20
21
  - phone_number_input_exclude_countries: Exclude Countries
21
22
  - phone_number_input_validation: Form Validation
22
23
  - phone_number_input_format: Format as You Type
24
+ - phone_number_input_strict_mode: Strict Mode
23
25
  - phone_number_input_hidden_inputs: Hidden Inputs
24
26
  - phone_number_input_country_search: Country Search
@@ -7,4 +7,5 @@ export { default as PhoneNumberInputValidation } from './_phone_number_input_val
7
7
  export { default as PhoneNumberInputClearField } from './_phone_number_input_clear_field'
8
8
  export { default as PhoneNumberInputAccessInputElement } from './_phone_number_input_access_input_element'
9
9
  export { default as PhoneNumberInputFormat } from './_phone_number_input_format'
10
+ export { default as PhoneNumberInputStrictMode } from './_phone_number_input_strict_mode'
10
11
  export { default as PhoneNumberInputCountrySearch } from './_phone_number_input_country_search'
@@ -25,6 +25,8 @@ module Playbook
25
25
  default: ""
26
26
  prop :format_as_you_type, type: Playbook::Props::Boolean,
27
27
  default: false
28
+ prop :strict_mode, type: Playbook::Props::Boolean,
29
+ default: false
28
30
  prop :hidden_inputs, type: Playbook::Props::Boolean,
29
31
  default: false
30
32
  prop :country_search, type: Playbook::Props::Boolean,
@@ -41,6 +43,7 @@ module Playbook
41
43
  disabled: disabled,
42
44
  error: error,
43
45
  formatAsYouType: format_as_you_type,
46
+ strictMode: strict_mode,
44
47
  hiddenInputs: hidden_inputs,
45
48
  initialCountry: initial_country,
46
49
  label: label,
@@ -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');