playbook_ui 14.9.0.pre.alpha.PBNTR746datepickerdefaultbug4903 → 14.9.0.pre.alpha.PBNTR775formmatingmaskdefaultvalue5121

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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/CollapsibleTrail.tsx +1 -6
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +11 -3
  4. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +1 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +2 -2
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail_rails.html.erb +36 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail_rails.md +1 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +4 -2
  10. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +8 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +2 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.html.erb +8 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.rb +2 -0
  14. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.jsx +53 -49
  15. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom_rails.html.erb +29 -36
  16. data/app/pb_kits/playbook/pb_card/_card.tsx +7 -7
  17. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -1
  18. data/app/pb_kits/playbook/pb_card/docs/_card_header.html.erb +21 -1
  19. data/app/pb_kits/playbook/pb_card/docs/_card_header.jsx +50 -0
  20. data/app/pb_kits/playbook/pb_card/docs/_card_header.md +1 -1
  21. data/app/pb_kits/playbook/pb_collapsible/_collapsible.tsx +9 -4
  22. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.tsx +2 -2
  23. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.tsx +2 -2
  24. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +2 -4
  25. data/app/pb_kits/playbook/pb_drawer/_drawer.tsx +2 -2
  26. data/app/pb_kits/playbook/pb_form_group/_error_state_mixin.scss +57 -0
  27. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +11 -2
  28. data/app/pb_kits/playbook/pb_gauge/_gauge.scss +31 -1
  29. data/app/pb_kits/playbook/pb_gauge/_gauge.tsx +3 -3
  30. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex.jsx +25 -5
  31. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +17 -1
  32. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.html.erb +17 -1
  33. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.jsx +15 -0
  34. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_emphasis.md +2 -1
  35. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +15 -1
  36. data/app/pb_kits/playbook/pb_home_address_street/none_emphasis.html.erb +32 -0
  37. data/app/pb_kits/playbook/pb_home_address_street/none_emphasis.rb +29 -0
  38. data/app/pb_kits/playbook/pb_layout/_layout.tsx +30 -11
  39. data/app/pb_kits/playbook/pb_link/_link.scss +3 -3
  40. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_filter.jsx +166 -0
  41. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width.jsx +2 -0
  42. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_user.jsx +89 -0
  43. data/app/pb_kits/playbook/pb_skeleton_loading/docs/example.yml +2 -1
  44. data/app/pb_kits/playbook/pb_skeleton_loading/docs/index.js +2 -0
  45. data/app/pb_kits/playbook/pb_table/_table.tsx +6 -6
  46. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.html.erb +30 -48
  47. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_rails.md +1 -0
  48. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +75 -0
  49. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.md +1 -0
  50. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +108 -0
  51. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.md +2 -0
  52. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.jsx +94 -0
  53. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.md +0 -0
  54. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.jsx +83 -0
  55. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.md +3 -0
  56. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.jsx +120 -0
  57. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.md +1 -0
  58. data/app/pb_kits/playbook/pb_table/docs/example.yml +7 -0
  59. data/app/pb_kits/playbook/pb_table/docs/index.js +5 -0
  60. data/app/pb_kits/playbook/pb_table/index.ts +5 -3
  61. data/app/pb_kits/playbook/pb_table/styles/_all.scss +2 -1
  62. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +35 -0
  63. data/app/pb_kits/playbook/pb_table/styles/_scroll.scss +28 -3
  64. data/app/pb_kits/playbook/pb_table/styles/_sticky_columns.scss +0 -1
  65. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +106 -1
  66. data/app/pb_kits/playbook/pb_table/table.html.erb +7 -1
  67. data/app/pb_kits/playbook/pb_table/table.rb +4 -0
  68. data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +43 -4
  69. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.jsx +88 -0
  70. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +1 -0
  71. data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
  72. data/app/pb_kits/playbook/pb_text_input/inputMask.ts +64 -0
  73. data/app/pb_kits/playbook/pb_text_input/text_input.test.js +139 -2
  74. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +115 -46
  75. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_highlight.jsx +9 -2
  76. data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +3 -2
  77. data/dist/chunks/_typeahead-DWFImMpi.js +22 -0
  78. data/dist/chunks/_weekday_stacked-UtPiOqYV.js +45 -0
  79. data/dist/chunks/lib-sMFo2JZy.js +29 -0
  80. data/dist/chunks/{pb_form_validation-DXJs12Hd.js → pb_form_validation-CgvjWbOK.js} +1 -1
  81. data/dist/chunks/vendor.js +1 -1
  82. data/dist/menu.yml +1 -1
  83. data/dist/playbook-doc.js +1 -1
  84. data/dist/playbook-rails-react-bindings.js +1 -1
  85. data/dist/playbook-rails.js +1 -1
  86. data/dist/playbook.css +1 -1
  87. data/lib/playbook/version.rb +1 -1
  88. metadata +27 -6
  89. data/dist/chunks/_typeahead-8iXlv4ii.js +0 -22
  90. data/dist/chunks/_weekday_stacked-QiMNKnzf.js +0 -45
  91. data/dist/chunks/lib-orI4wF5u.js +0 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7b3f96db16633e2d11c150f69e673e06c4b00563a4443b4488b3c70c076e545
4
- data.tar.gz: 1d7bd6f688a3bab9fc3dfdb1865bffc92a88258164a35f99d32ac658222b7a1d
3
+ metadata.gz: cfe5e243fdd166f4333142e96b09c56088e5b1d265266ffa87e103a41fc8eaef
4
+ data.tar.gz: 58a5bea3b1b81cc0fb06731f30aef7c5c02fbc2d7bfddc7175046d913355f325
5
5
  SHA512:
6
- metadata.gz: f7651cee71bffcb59d7fc86fd04ef361acc68620d3a16ecdad34886e240d8447983a06ae0b150c146508a28166bc1efce89a73f5910eeae6482e15069d52bf77
7
- data.tar.gz: 13dda38a57028c9134c8398b2aec92ca4bb50ec6f51db65a1232d3cb704a2113cb7d7a1a6e4a2b1bd589bc4aeff821c293ae206c5202228ed65e8adc39860496
6
+ metadata.gz: fb44317a418ce0d5042d883f6c7a5d1789cef28e04fa3819021e8ec853f8dc5db8dbf09b2fe925188356586e4a9707a6497e0102afaedec2f4c466d4603fad8a
7
+ data.tar.gz: aada7d4698d5b7dfc3ba3528f295ba980eca79b85ed5d018e332e4ec473b0b021863c412fd2f49b6b9d0e02a4a527bdbe1ffa0160e62f9f2b2b25ccaaee982b1
@@ -3,18 +3,13 @@ import React from "react"
3
3
  //CollapsibleTrail component
4
4
  const CollapsibleTrail = ({ leftOffset }: { leftOffset: number }) => {
5
5
  const style: { [key: string]: string | number } = {
6
- position: "absolute",
7
6
  left: `${leftOffset}em`,
8
- top: 0,
9
- bottom: 0,
10
- width: "2px",
11
- backgroundColor: "#E4E8F0",
12
7
  }
13
8
 
14
9
  return (
15
10
  <div
16
11
  className="collapsible-trail"
17
- style={style}
12
+ style={style}
18
13
  />
19
14
  )
20
15
  }
@@ -110,9 +110,17 @@
110
110
  height: auto;
111
111
  }
112
112
 
113
+ .collapsible-trail {
114
+ background-color: $border_light;
115
+ position: absolute;
116
+ top: 0;
117
+ bottom: 0;
118
+ width: 2px;
119
+ }
120
+
113
121
  // Responsive Styles
114
122
  @media only screen and (max-width: $screen-xl-min) {
115
- &[class*="table-responsive-scroll"] {
123
+ &[class*="advanced-table-responsive-scroll"] {
116
124
  border-radius: 4px;
117
125
  box-shadow: 1px 0 0 0px $border_light,
118
126
  -1px 0 0 0px $border_light;
@@ -150,7 +158,7 @@
150
158
  }
151
159
  }
152
160
  @media only screen and (min-width: $screen-xl-min) {
153
- &[class*="table-responsive-scroll"] {
161
+ &[class*="advanced-table-responsive-scroll"] {
154
162
  overflow-x: visible;
155
163
  }
156
164
  }
@@ -200,7 +208,7 @@
200
208
  }
201
209
  // Dark Mode Responsive Styles
202
210
  @media only screen and (max-width: $screen-xl-min) {
203
- &[class*="table-responsive-scroll"] {
211
+ &[class*="advanced-table-responsive-scroll"] {
204
212
  border-radius: 4px;
205
213
  box-shadow: 1px 0 0 0px $border_dark,
206
214
  -1px 0 0 0px $border_dark;
@@ -240,7 +240,7 @@ const AdvancedTable = (props: AdvancedTableProps) => {
240
240
  const htmlProps = buildHtmlProps(htmlOptions)
241
241
  const classes = classnames(
242
242
  buildCss("pb_advanced_table"),
243
- `table-responsive-${responsive}`,
243
+ `advanced-table-responsive-${responsive}`,
244
244
  globalProps(props),
245
245
  className
246
246
  )
@@ -468,7 +468,7 @@ test("responsive prop functions as expected", () => {
468
468
  )
469
469
 
470
470
  const kit = screen.getByTestId(testId)
471
- expect(kit).toHaveClass("pb_advanced_table table-responsive-scroll")
471
+ expect(kit).toHaveClass("pb_advanced_table advanced-table-responsive-scroll")
472
472
  })
473
473
 
474
474
  test("responsive none prop functions as expected", () => {
@@ -483,7 +483,7 @@ test("responsive none prop functions as expected", () => {
483
483
  )
484
484
 
485
485
  const kit = screen.getByTestId(testId)
486
- expect(kit).toHaveClass("pb_advanced_table table-responsive-none")
486
+ expect(kit).toHaveClass("pb_advanced_table advanced-table-responsive-none")
487
487
  })
488
488
 
489
489
  test("customRenderer prop functions as expected", () => {
@@ -0,0 +1,36 @@
1
+ <% column_definitions = [
2
+ {
3
+ accessor: "year",
4
+ label: "Year",
5
+ cellAccessors: ["quarter", "month", "day"],
6
+ },
7
+ {
8
+ accessor: "newEnrollments",
9
+ label: "New Enrollments",
10
+ },
11
+ {
12
+ accessor: "scheduledMeetings",
13
+ label: "Scheduled Meetings",
14
+ },
15
+ {
16
+ accessor: "attendanceRate",
17
+ label: "Attendance Rate",
18
+ },
19
+ {
20
+ accessor: "completedClasses",
21
+ label: "Completed Classes",
22
+ },
23
+ {
24
+ accessor: "classCompletionRate",
25
+ label: "Class Completion Rate",
26
+ },
27
+ {
28
+ accessor: "graduatedStudents",
29
+ label: "Graduated Students",
30
+ }
31
+ ] %>
32
+
33
+ <%= pb_rails("advanced_table", props: { id: "collapsible_trail", table_data: @table_data, column_definitions: column_definitions }) do %>
34
+ <%= pb_rails("advanced_table/table_header", props: { column_definitions: column_definitions }) %>
35
+ <%= pb_rails("advanced_table/table_body", props: { table_data: @table_data, column_definitions: column_definitions, collapsible_trail: false }) %>
36
+ <% end %>
@@ -0,0 +1 @@
1
+ `collapsible_trail` is an optional prop that is set to 'true' by default. If set to 'false', it will remove the trail on the left of the rows when subRows are toggled open.
@@ -2,6 +2,7 @@ examples:
2
2
  rails:
3
3
  - advanced_table_beta: Default (Required Props)
4
4
  - advanced_table_beta_subrow_headers: SubRow Headers
5
+ - advanced_table_collapsible_trail_rails: Collapsible Trail
5
6
  - advanced_table_beta_sort: Enable Sorting
6
7
  - advanced_table_custom_cell_rails: Custom Components for Cells
7
8
 
@@ -14,14 +14,16 @@ module Playbook
14
14
  default: "header"
15
15
  prop :subrow_headers, type: Playbook::Props::Array,
16
16
  default: []
17
+ prop :collapsible_trail, type: Playbook::Props::Boolean,
18
+ default: true
17
19
 
18
20
  def render_row_and_children(row, column_definitions, current_depth, first_parent_child)
19
21
  output = ActiveSupport::SafeBuffer.new
20
22
  is_first_child_of_subrow = current_depth.positive? && first_parent_child && subrow_headers[current_depth - 1].present?
21
23
 
22
- output << pb_rails("advanced_table/table_subrow_header", props: { row: row, column_definitions: column_definitions, depth: current_depth, subrow_header: subrow_headers[current_depth - 1] }) if is_first_child_of_subrow && enable_toggle_expansion == "all"
24
+ output << pb_rails("advanced_table/table_subrow_header", props: { row: row, column_definitions: column_definitions, depth: current_depth, subrow_header: subrow_headers[current_depth - 1], collapsible_trail: collapsible_trail }) if is_first_child_of_subrow && enable_toggle_expansion == "all"
23
25
 
24
- output << pb_rails("advanced_table/table_row", props: { id: id, row: row, column_definitions: column_definitions, depth: current_depth })
26
+ output << pb_rails("advanced_table/table_row", props: { id: id, row: row, column_definitions: column_definitions, depth: current_depth, collapsible_trail: collapsible_trail })
25
27
 
26
28
  if row[:children].present?
27
29
  output << content_tag(:div, class: "toggle-content", data: { advanced_table_content: row.object_id.to_s + id }) do
@@ -2,6 +2,14 @@
2
2
  <% object.column_definitions.each_with_index do |column, index| %>
3
3
  <%= pb_rails("table/table_cell", props: { tag:"div", classname:object.td_classname}) do %>
4
4
  <%= pb_rails("flex", props:{ align: "center", justify: index.zero? ? "start" : "end" }) do %>
5
+ <% if collapsible_trail && index.zero? %>
6
+ <% (1..depth).each do |i| %>
7
+ <% additional_offset = i > 1 ? (i - 1) * 0.25 : 0 %>
8
+ <% left_offset = i * 1.0 + additional_offset %>
9
+ <div class="collapsible-trail" style="left: <%= left_offset %>em"></div>
10
+ <% end %>
11
+ <% end %>
12
+
5
13
  <div style="padding-left: <%= depth * 1.25 %>em">
6
14
  <%= pb_rails("flex", props:{align: "center", column_gap: "xs"}) do %>
7
15
  <% if index.zero? && object.row[:children].present? %>
@@ -9,6 +9,8 @@ module Playbook
9
9
  default: []
10
10
  prop :row
11
11
  prop :depth
12
+ prop :collapsible_trail, type: Playbook::Props::Boolean,
13
+ default: true
12
14
 
13
15
  def classname
14
16
  generate_classname("pb_table_tr", "bg-white", subrow_depth_classname, separator: " ")
@@ -6,6 +6,14 @@
6
6
  <% object.column_definitions.each_with_index do |column, index| %>
7
7
  <%= pb_rails("table/table_cell", props: { tag: "div", classname: object.td_classname}) do %>
8
8
  <%= pb_rails("flex", props:{ align: "center", justify: "start" }) do %>
9
+ <% if collapsible_trail && index.zero? %>
10
+ <% (1..depth).each do |i| %>
11
+ <% additional_offset = i > 1 ? (i - 1) * 0.25 : 0 %>
12
+ <% left_offset = i * 1.0 + additional_offset %>
13
+ <div class="collapsible-trail" style="left: <%= left_offset %>em"></div>
14
+ <% end %>
15
+ <% end %>
16
+
9
17
  <div style="padding-left: <%= depth * 1.25 %>em">
10
18
  <%= pb_rails("flex", props:{align: "center", column_gap: "xs"}) do %>
11
19
  <% if index.zero? && object.row[:children].present? %>
@@ -12,6 +12,8 @@ module Playbook
12
12
  default: "header"
13
13
  prop :subrow_header, type: Playbook::Props::String,
14
14
  default: ""
15
+ prop :collapsible_trail, type: Playbook::Props::Boolean,
16
+ default: true
15
17
 
16
18
  def classname
17
19
  generate_classname("pb_table_tr", "bg-white", subrow_depth_classname, separator: " ")
@@ -1,66 +1,70 @@
1
1
  import React from 'react'
2
-
2
+ import ReactDOMServer from 'react-dom/server'
3
3
  import BarGraph from '../_bar_graph'
4
+ import Icon from '../../pb_icon/_icon'
5
+
6
+ const chartData = [
7
+ {
8
+ name: 'Role',
9
+ data: [0, 200, 300, 654, 656],
10
+ },
11
+ {
12
+ name: 'Company',
13
+ data: [150, 524, 320, 440, 500],
14
+ },
15
+ ]
4
16
 
5
- const chartData = [{
6
- name: 'Installation',
7
- data: [1475, 200, 3000, 654, 656],
8
- }, {
9
- name: 'Manufacturing',
10
- data: [4434, 524, 2320, 440, 500],
11
- }, {
12
- name: 'Sales & Distribution',
13
- data: [3387, 743, 1344, 434, 440],
14
- }, {
15
- name: 'Project Development',
16
- data: [3227, 878, 999, 780, 1000],
17
- }, {
18
- name: 'Other',
19
- data: [1111, 677, 3245, 500, 200],
20
- }]
17
+ const renderIcon = (iconName, color) => {
18
+ return ReactDOMServer.renderToStaticMarkup(
19
+ <Icon
20
+ color={color}
21
+ icon={iconName}
22
+ />)
23
+ };
21
24
 
22
25
  const barGraphOptions = {
23
- subtitle: {
24
- text: "Overwritten subtitle",
25
- style: {
26
- color: "red"
27
- }
26
+ yAxis: {
27
+ tickInterval: 5,
28
28
  },
29
29
  xAxis: {
30
- labels: {
31
- useHTML: true,
32
- formatter: function() {
33
- switch (this.value) {
34
- case 'Jan':
35
- return `<i class="far fa-apple-whole"></i> ${this.value}`
36
- case 'Feb':
37
- return `<i class="far fa-strawberry"></i> ${this.value}`
38
- case 'Mar':
39
- return `<i class="far fa-lemon"></i> ${this.value}`
40
- case 'Apr':
41
- return `<i class="far fa-pear"></i> ${this.value}`
42
- case 'May':
43
- return `<i class="far fa-peach"></i> ${this.value}`
44
- default:
45
- return ''
46
- }
47
- }
48
- }
49
- }
30
+ categories: ['1', '2', '3', '4', '5'],
31
+ labels: {
32
+ useHTML: true,
33
+ formatter: function () {
34
+ switch (this.value) {
35
+ case '1':
36
+ return `${renderIcon('frown', 'error')}`;
37
+ case '2':
38
+ return `${renderIcon('frown', 'warning')}`;
39
+ case '3':
40
+ return `${renderIcon('frown-open', 'neutral')}`;
41
+ case '4':
42
+ return `${renderIcon('smile', 'category_7')}`;
43
+ case '5':
44
+ return `${renderIcon('smile-beam', 'success')}`;
45
+ default:
46
+ return ''
47
+ }
48
+ },
49
+ style: {
50
+ fontSize: '1.4em',
51
+ },
52
+ y: 42,
53
+ },
54
+ },
55
+ legend: {
56
+ itemMarginTop: 62,
57
+ },
50
58
  }
51
59
 
52
- const BarGraphCustom = (props) => (
60
+ const BarGraphCustom = () => (
53
61
  <div>
54
62
  <BarGraph
55
- axisTitle="Number of Employees"
56
63
  chartData={chartData}
57
64
  customOptions={barGraphOptions}
58
- id="bar-custom"
59
- subTitle="Subtitle to replace"
65
+ id="happiness-dashboard"
66
+ legend
60
67
  title="Bar Graph with Custom Overrides"
61
- xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May']}
62
- yAxisMin={0}
63
- {...props}
64
68
  />
65
69
  </div>
66
70
  )
@@ -1,49 +1,42 @@
1
1
  <% data = [{
2
- name: 'Installation',
3
- data: [1475,200,3000,654,656]
2
+ name: 'Role',
3
+ data: [0, 200, 300, 654, 656],
4
4
  }, {
5
- name: 'Manufacturing',
6
- data: [4434,524,2320,440,500]
7
- }, {
8
- name: 'Sales & Distribution',
9
- data: [3387,743,1344,434,440,]
10
- }, {
11
- name: 'Project Development',
12
- data: [3227,878,999,780,1000]
13
- }, {
14
- name: 'Other',
15
- data: [1111,677,3245,500,200]
5
+ name: 'Company',
6
+ data: [150, 524, 320, 440, 500],
16
7
  }] %>
17
8
 
18
9
  <% bar_graph_options = {
19
- customOptions: {
20
- subtitle: {
21
- text: "Overwritten subtitle",
22
- style: {
23
- color: "red"
24
- }
10
+ customOptions: {
11
+ yAxis: {
12
+ tickInterval: 5,
13
+ },
14
+ xAxis: {
15
+ categories: [
16
+ raw(pb_rails("icon", props: { icon: "frown", color: "error", size: "2x" })),
17
+ raw(pb_rails("icon", props: { icon: "frown", color: "warning", size: "2x" })),
18
+ raw(pb_rails("icon", props: { icon: "frown-open", color: "neutral", size: "2x" })),
19
+ raw(pb_rails("icon", props: { icon: "smile", color: "category_7", size: "2x" })),
20
+ raw(pb_rails("icon", props: { icon: "smile-beam", color: "success", size: "2x" }))
21
+ ],
22
+ labels: {
23
+ useHTML: true,
24
+ sytle: {
25
+ fontSize: '1.4em',
25
26
  },
26
- xAxis: {
27
- categories: [
28
- '<i class="far fa-apple-whole"></i> Jan',
29
- '<i class="far fa-strawberry"></i> Feb',
30
- '<i class="far fa-lemon"></i> Mar',
31
- '<i class="far fa-pear"></i> Apr',
32
- '<i class="far fa-peach"></i> May'
33
- ],
34
- labels: {
35
- useHTML: true,
36
- }
37
- }
38
- }
27
+ y: 42,
28
+ },
29
+ },
30
+ legend: {
31
+ itemMarginTop: 62,
32
+ },
33
+ }
39
34
  } %>
40
35
 
41
36
  <%= pb_rails("bar_graph", props: {
42
- axis_title: 'Number of Employees',
43
37
  chart_data: data,
44
38
  id: "bar-default",
45
- y_axis_min: 0,
46
- subtitle: 'Subtitle to replace',
39
+ legend: true,
47
40
  title: 'Bar Graph with Custom Overrides',
48
41
  custom_options: bar_graph_options
49
- }) %>
42
+ }) %>
@@ -6,7 +6,7 @@ import classnames from 'classnames'
6
6
 
7
7
  import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
8
8
  import { GlobalProps, globalProps, globalInlineProps } from '../utilities/globalProps'
9
- import type { ProductColors, CategoryColors, BackgroundColors } from '../types/colors'
9
+ import type { ProductColors, CategoryColors, BackgroundColors, StatusColors } from '../types/colors'
10
10
 
11
11
  import Icon from '../pb_icon/_icon'
12
12
  import Flex from '../pb_flex/_flex'
@@ -36,7 +36,7 @@ type CardPropTypes = {
36
36
  } & GlobalProps
37
37
 
38
38
  type CardHeaderProps = {
39
- headerColor?: BackgroundColors | ProductColors | CategoryColors | "none",
39
+ headerColor?: BackgroundColors | ProductColors | CategoryColors | StatusColors | "none",
40
40
  headerColorStriped?: boolean,
41
41
  children: React.ReactChild[] | React.ReactChild,
42
42
  className?: string,
@@ -127,12 +127,12 @@ const Card = (props: CardPropTypes): React.ReactElement => {
127
127
 
128
128
  const tagOptions = ['div', 'section', 'footer', 'header', 'article', 'aside', 'main', 'nav']
129
129
  const Tag = tagOptions.includes(tag) ? tag : 'div'
130
-
130
+
131
131
  return (
132
132
  <>
133
133
  {
134
134
  draggableItem ? (
135
- <Draggable.Item dragId={dragId}
135
+ <Draggable.Item dragId={dragId}
136
136
  key={dragId}
137
137
  >
138
138
  <Tag
@@ -140,14 +140,14 @@ const Card = (props: CardPropTypes): React.ReactElement => {
140
140
  {...dataProps}
141
141
  className={classnames(cardCss, globalProps(props), className)}
142
142
  {...restHtmlProps}
143
- style={mergedStyles}
143
+ style={mergedStyles}
144
144
  >
145
145
  {subComponentTags('Header')}
146
146
  {
147
147
  dragHandle ? (
148
148
  <Flex>
149
149
  <span className="card_draggable_handle">
150
- <Icon
150
+ <Icon
151
151
  icon="grip-dots-vertical"
152
152
  paddingRight="xs"
153
153
  verticalAlign="middle"
@@ -169,7 +169,7 @@ const Card = (props: CardPropTypes): React.ReactElement => {
169
169
  {...dataProps}
170
170
  className={classnames(cardCss, globalProps(props), className)}
171
171
  {...restHtmlProps}
172
- style={mergedStyles}
172
+ style={mergedStyles}
173
173
  >
174
174
  {subComponentTags('Header')}
175
175
  {nonHeaderChildren}
@@ -24,7 +24,7 @@ $additional_colors: (
24
24
  "neutral_subtle": $neutral_subtle,
25
25
  );
26
26
  $background_colors: map-merge($product_colors, $additional_colors);
27
- $pb_card_header_colors: map-merge(map-merge($product_colors, $additional_colors), $category_colors);
27
+ $pb_card_header_colors: map-merge(map-merge(map-merge($product_colors, $additional_colors), $category_colors), $status_colors);
28
28
 
29
29
  @mixin pb_card_selected($border_color: $primary) {
30
30
  border-color: $border_color;
@@ -67,4 +67,24 @@
67
67
  <%= pb_rails("card/card_body", props: { padding: "md", }) do %>
68
68
  Body
69
69
  <% end %>
70
- <% end %>
70
+ <% end %>
71
+
72
+ <%= pb_rails("title", props: { text: "Status Colors", tag: "h4", size: 4, margin_bottom: "sm" }) %>
73
+
74
+ <%= pb_rails("card", props: { padding: "none", header: true, margin_bottom: "sm"}) do %>
75
+ <%= pb_rails("card/card_header", props: { padding: "sm", header_color: "success" }) do %>
76
+ <%= pb_rails("body", props: { text: "Success", dark: true }) %>
77
+ <% end %>
78
+ <%= pb_rails("card/card_body", props: { padding: "md" }) do %>
79
+ Body
80
+ <% end %>
81
+ <% end %>
82
+
83
+ <%= pb_rails("card", props: { padding: "none", header: true, margin_bottom: "sm"}) do %>
84
+ <%= pb_rails("card/card_header", props: { padding: "sm", header_color: "error" }) do %>
85
+ <%= pb_rails("body", props: { text: "Error", dark: true }) %>
86
+ <% end %>
87
+ <%= pb_rails("card/card_body", props: { padding: "md" }) do %>
88
+ Body
89
+ <% end %>
90
+ <% end %>
@@ -181,6 +181,56 @@ const CardHeader = (props) => {
181
181
  />
182
182
  </Card.Body>
183
183
  </Card>
184
+
185
+ <Title
186
+ {...props}
187
+ marginBottom='sm'
188
+ size={4}
189
+ tag="h4"
190
+ text="Status Colors"
191
+ />
192
+
193
+ <Card
194
+ {...props}
195
+ marginBottom='sm'
196
+ padding="none"
197
+ >
198
+ <Card.Header
199
+ headerColor="success"
200
+ >
201
+ <Body
202
+ dark
203
+ text="Success"
204
+ />
205
+ </Card.Header>
206
+ <Card.Body>
207
+ <Body
208
+ {...props}
209
+ text="Body"
210
+ />
211
+ </Card.Body>
212
+ </Card>
213
+
214
+ <Card
215
+ {...props}
216
+ marginBottom='sm'
217
+ padding="none"
218
+ >
219
+ <Card.Header
220
+ headerColor="error"
221
+ >
222
+ <Body
223
+ dark
224
+ text="Error"
225
+ />
226
+ </Card.Header>
227
+ <Card.Body>
228
+ <Body
229
+ {...props}
230
+ text="Body"
231
+ />
232
+ </Card.Body>
233
+ </Card>
184
234
  </>
185
235
  )
186
236
  }
@@ -1 +1 @@
1
- Card headers pass category, product, and background colors only. List of all category, product, and background colors can be viewed <a href="https://playbook.powerapp.cloud/visual_guidelines/colors" target="_blank">here</a>.
1
+ Card headers pass category, product, status and background colors only. List of all category, product, status and background colors can be viewed <a href="https://playbook.powerapp.cloud/visual_guidelines/colors" target="_blank">here</a>.
@@ -2,7 +2,7 @@ import React, { useEffect, ReactElement } from 'react'
2
2
  import classnames from 'classnames'
3
3
  import useCollapsible from './useCollapsible'
4
4
 
5
- import { globalProps, globalInlineProps } from '../utilities/globalProps'
5
+ import { globalProps, globalInlineProps, GlobalProps } from '../utilities/globalProps'
6
6
  import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
7
7
 
8
8
  import CollapsibleContent from './child_kits/CollapsibleContent'
@@ -32,6 +32,7 @@ type CollapsibleProps = {
32
32
  onClick?: ()=> void,
33
33
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
34
34
  id?: string,
35
+ tag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div' | 'tr' | 'th' | 'td' | 'thead' | 'col',
35
36
  }
36
37
 
37
38
  const Collapsible = ({
@@ -47,8 +48,9 @@ const Collapsible = ({
47
48
  onIconClick,
48
49
  onClick,
49
50
  id,
51
+ tag = 'div',
50
52
  ...props
51
- }: CollapsibleProps): React.ReactElement => {
53
+ }: CollapsibleProps & GlobalProps): React.ReactElement => {
52
54
  const [isCollapsed, toggle, setIsCollapsed] = useCollapsible(collapsed)
53
55
 
54
56
  useEffect(()=> {
@@ -76,9 +78,12 @@ const Collapsible = ({
76
78
  className
77
79
  )
78
80
  const dynamicInlineProps = globalInlineProps(props)
81
+
82
+ const Tag: React.ReactElement | any = `${tag}`;
83
+
79
84
  return (
80
85
  <CollapsibleContext.Provider value={{ collapsed: isCollapsed, toggle, icon, iconSize, iconColor, onIconClick, onClick }}>
81
- <div
86
+ <Tag
82
87
  {...ariaProps}
83
88
  {...dataProps}
84
89
  {...htmlProps}
@@ -96,7 +101,7 @@ const Collapsible = ({
96
101
  <CollapsibleContent {...contentProps}>
97
102
  {contentChildren}
98
103
  </CollapsibleContent>
99
- </div>
104
+ </Tag>
100
105
  </CollapsibleContext.Provider>
101
106
  )
102
107
  }
@@ -1,7 +1,7 @@
1
1
  import classnames from 'classnames'
2
2
  import React, { useContext, useRef, useEffect } from 'react'
3
3
  import { buildCss } from '../../utilities/props'
4
- import { globalProps } from '../../utilities/globalProps'
4
+ import { globalProps, GlobalProps } from '../../utilities/globalProps'
5
5
  import { hideElement, showElement } from '../_helper_functions'
6
6
 
7
7
  import CollapsibleContext from '../context'
@@ -15,7 +15,7 @@ const CollapsibleContent = ({
15
15
  children,
16
16
  className,
17
17
  ...props
18
- }: CollapsibleContentProps): React.ReactElement => {
18
+ }: CollapsibleContentProps & GlobalProps): React.ReactElement => {
19
19
  const context: {[key: string]: boolean | string} = useContext(CollapsibleContext)
20
20
  const contentCSS = buildCss('pb_collapsible_content_kit')
21
21
  const contentSpacing = globalProps(props)