playbook_ui 15.6.0.pre.alpha.play266913088 → 15.6.0.pre.rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +2 -3
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +0 -4
  4. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +0 -95
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_control_rails.html.erb +5 -11
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_control_rails.md +1 -7
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +163 -1
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.jsx +190 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -4
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -3
  11. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +2 -2
  12. data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +0 -57
  13. data/app/pb_kits/playbook/pb_background/_background.tsx +6 -6
  14. data/app/pb_kits/playbook/pb_background/background.test.js +1 -5
  15. data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +1 -1
  16. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +1 -0
  17. data/app/pb_kits/playbook/pb_background/docs/example.yml +2 -2
  18. data/app/pb_kits/playbook/pb_card/docs/_card_header.md +1 -1
  19. data/app/pb_kits/playbook/pb_card/docs/_card_highlight.md +1 -1
  20. data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +2 -2
  21. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleIcon.tsx +8 -10
  22. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_icons.jsx +1 -0
  23. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_state.jsx +3 -0
  24. data/app/pb_kits/playbook/pb_contact/_contact.tsx +24 -51
  25. data/app/pb_kits/playbook/pb_contact/contact.html.erb +19 -53
  26. data/app/pb_kits/playbook/pb_contact/contact.rb +1 -11
  27. data/app/pb_kits/playbook/pb_contact/contact.test.js +0 -76
  28. data/app/pb_kits/playbook/pb_contact/docs/example.yml +0 -2
  29. data/app/pb_kits/playbook/pb_contact/docs/index.js +0 -1
  30. data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +0 -24
  31. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +7 -197
  32. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern_rails.html.erb +14 -23
  33. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern_rails.md +1 -1
  34. data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +1 -2
  35. data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +1 -1
  36. data/app/pb_kits/playbook/pb_dialog/dialog.rb +0 -1
  37. data/app/pb_kits/playbook/pb_dialog/dialog.test.jsx +0 -14
  38. data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +4 -5
  39. data/app/pb_kits/playbook/pb_dialog/dialog_header.rb +0 -2
  40. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.html.erb +0 -31
  41. data/app/pb_kits/playbook/pb_dialog/docs/example.yml +0 -4
  42. data/app/pb_kits/playbook/pb_dialog/docs/index.js +1 -3
  43. data/app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_custom_colors.md +1 -1
  44. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +7 -458
  45. data/app/pb_kits/playbook/pb_draggable/context/types.ts +3 -8
  46. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +2 -3
  47. data/app/pb_kits/playbook/pb_draggable/docs/index.js +1 -2
  48. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +1 -77
  49. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_rails.html.erb +5 -7
  50. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.html.erb +1 -3
  51. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +0 -5
  52. data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +0 -4
  53. data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +5 -39
  54. data/app/pb_kits/playbook/pb_dropdown/index.js +3 -171
  55. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +4 -4
  56. data/app/pb_kits/playbook/pb_filter/Filter/FilterBackground.tsx +3 -3
  57. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +22 -34
  58. data/app/pb_kits/playbook/pb_home_address_street/city_emphasis.html.erb +12 -16
  59. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default.html.erb +1 -1
  60. data/app/pb_kits/playbook/pb_home_address_street/none_emphasis.html.erb +12 -16
  61. data/app/pb_kits/playbook/pb_home_address_street/street_emphasis.html.erb +12 -16
  62. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +0 -10
  63. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.tsx +15 -66
  64. data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +0 -1
  65. data/app/pb_kits/playbook/pb_multiple_users/docs/index.js +0 -1
  66. data/app/pb_kits/playbook/pb_multiple_users/multiple_users.test.js +0 -25
  67. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +10 -44
  68. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.html.erb +4 -34
  69. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.jsx +7 -16
  70. data/app/pb_kits/playbook/pb_radio/docs/_radio_error.md +1 -1
  71. data/app/pb_kits/playbook/pb_select/_select.tsx +3 -8
  72. data/app/pb_kits/playbook/pb_select/docs/_select_error.md +1 -1
  73. data/app/pb_kits/playbook/pb_select/docs/example.yml +0 -2
  74. data/app/pb_kits/playbook/pb_select/docs/index.js +0 -1
  75. data/app/pb_kits/playbook/pb_select/select.html.erb +2 -2
  76. data/app/pb_kits/playbook/pb_select/select.rb +1 -3
  77. data/app/pb_kits/playbook/pb_select/select.test.js +0 -23
  78. data/app/pb_kits/playbook/pb_table/_table.tsx +33 -187
  79. data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -4
  80. data/app/pb_kits/playbook/pb_table/docs/index.js +0 -2
  81. data/app/pb_kits/playbook/pb_table/table.html.erb +12 -68
  82. data/app/pb_kits/playbook/pb_table/table.rb +3 -22
  83. data/app/pb_kits/playbook/pb_table/table.test.js +0 -143
  84. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.md +1 -1
  85. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.md +1 -1
  86. data/app/pb_kits/playbook/pb_timeline/_item.tsx +0 -3
  87. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_date.md +1 -1
  88. data/app/pb_kits/playbook/pb_timeline/docs/example.yml +0 -2
  89. data/app/pb_kits/playbook/pb_timeline/docs/index.js +0 -1
  90. data/app/pb_kits/playbook/pb_timeline/item.html.erb +1 -1
  91. data/app/pb_kits/playbook/pb_timeline/item.rb +0 -2
  92. data/app/pb_kits/playbook/pb_timeline/label.html.erb +1 -2
  93. data/app/pb_kits/playbook/pb_timeline/label.rb +0 -2
  94. data/app/pb_kits/playbook/pb_timeline/subcomponents/Label.tsx +0 -3
  95. data/app/pb_kits/playbook/pb_timeline/timeline.test.js +0 -51
  96. data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +0 -15
  97. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +0 -3
  98. data/app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.tsx +2 -13
  99. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -6
  100. data/app/pb_kits/playbook/pb_typeahead/components/ValueContainer.tsx +7 -34
  101. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +0 -2
  102. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +1 -2
  103. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +1 -6
  104. data/app/pb_kits/playbook/tokens/_colors.scss +1 -2
  105. data/dist/chunks/_typeahead-kRdz5zPn.js +6 -0
  106. data/dist/chunks/lib-CgpqUb6l.js +29 -0
  107. data/dist/chunks/vendor.js +3 -3
  108. data/dist/menu.yml +1 -1
  109. data/dist/playbook-rails-react-bindings.js +1 -1
  110. data/dist/playbook-rails.js +1 -1
  111. data/dist/playbook.css +1 -1
  112. data/lib/playbook/forms/builder/collection_select_field.rb +1 -9
  113. data/lib/playbook/forms/builder/select_field.rb +1 -9
  114. data/lib/playbook/forms/builder/time_zone_select_field.rb +1 -9
  115. data/lib/playbook/pb_kit_helper.rb +0 -35
  116. data/lib/playbook/version.rb +2 -2
  117. metadata +4 -54
  118. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_colors_rails.html.erb +0 -43
  119. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_background_colors_rails.md +0 -1
  120. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background.jsx +0 -54
  121. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background.md +0 -9
  122. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_multi.jsx +0 -80
  123. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_background_multi.md +0 -3
  124. data/app/pb_kits/playbook/pb_background/docs/_background_light.md +0 -1
  125. data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled.html.erb +0 -33
  126. data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled.jsx +0 -46
  127. data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled_rails.md +0 -2
  128. data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled_react.md +0 -2
  129. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_closeable.html.erb +0 -24
  130. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_closeable.jsx +0 -60
  131. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_closeable.md +0 -3
  132. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_overflow_visible.html.erb +0 -71
  133. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_overflow_visible.jsx +0 -57
  134. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_overflow_visible_rails.md +0 -1
  135. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_overflow_visible_react.md +0 -1
  136. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_dropzone.jsx +0 -180
  137. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_dropzone.md +0 -22
  138. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_default_dates.html.erb +0 -19
  139. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_rails.html.erb +0 -12
  140. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_rails.md +0 -26
  141. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_range_end_rails.html.erb +0 -19
  142. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_range_end_rails.md +0 -1
  143. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers_default_rails.html.erb +0 -30
  144. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers_default_rails.md +0 -3
  145. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers_rails.html.erb +0 -29
  146. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_quickpick_with_date_pickers_rails.md +0 -13
  147. data/app/pb_kits/playbook/pb_dropdown/quickpick_helper.rb +0 -75
  148. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.jsx +0 -42
  149. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.md +0 -1
  150. data/app/pb_kits/playbook/pb_select/docs/_select_input_options.html.erb +0 -16
  151. data/app/pb_kits/playbook/pb_select/docs/_select_input_options.jsx +0 -30
  152. data/app/pb_kits/playbook/pb_select/docs/_select_input_options.md +0 -1
  153. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant.jsx +0 -134
  154. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant.md +0 -34
  155. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_rails.html.erb +0 -101
  156. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_rails.md +0 -33
  157. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination.jsx +0 -180
  158. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination.md +0 -3
  159. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.html.erb +0 -122
  160. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.md +0 -3
  161. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.html.erb +0 -60
  162. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.jsx +0 -118
  163. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.md +0 -1
  164. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.html.erb +0 -30
  165. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.jsx +0 -37
  166. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.md +0 -3
  167. data/app/pb_kits/playbook/utilities/deprecated.ts +0 -73
  168. data/dist/chunks/_typeahead-CbjBmIDu.js +0 -6
  169. data/dist/chunks/lib-DxDBrGZX.js +0 -29
@@ -119,59 +119,6 @@ module Playbook
119
119
  end
120
120
  end
121
121
 
122
- # Get header background color from column styling
123
- def header_background_color(cell)
124
- original_def = find_original_column_def_for_cell(cell)
125
- return nil unless original_def
126
-
127
- original_def.dig(:column_styling, :header_background_color)
128
- end
129
-
130
- # Get header font color from column styling
131
- def header_font_color(cell)
132
- original_def = find_original_column_def_for_cell(cell)
133
- return nil unless original_def
134
-
135
- original_def.dig(:column_styling, :header_font_color)
136
- end
137
-
138
- # Check if header has custom background color
139
- def has_custom_header_background_color?(cell)
140
- cell[:header_background_color].present?
141
- end
142
-
143
- # Returns component info for header cell (uses background kit if custom bg color)
144
- def header_component_info(cell, cell_index, row_index)
145
- header_id = cell[:accessor].present? ? cell[:accessor] : "header_#{row_index}_#{cell_index}"
146
- classname = [th_classname(is_first_column: cell_index.zero?), ("last-header-cell" if cell[:is_last_in_group] && cell_index != 0)].compact.join(" ")
147
-
148
- if has_custom_header_background_color?(cell)
149
- component_name = "background"
150
- component_props = {
151
- background_color: cell[:header_background_color],
152
- tag: "th",
153
- classname: classname,
154
- }
155
- component_props[:html_options] = {
156
- id: header_id,
157
- colspan: cell[:colspan],
158
- style: { color: cell[:header_font_color] },
159
- }
160
- component_props[:html_options][:style].delete(:color) unless cell[:header_font_color].present?
161
- else
162
- component_name = "table/table_header"
163
- component_props = {
164
- id: header_id,
165
- colspan: cell[:colspan],
166
- classname: classname,
167
- sort_menu: cell[:accessor] ? cell[:sort_menu] : nil,
168
- }
169
- component_props[:html_options] = { style: { color: cell[:header_font_color] } } if cell[:header_font_color].present?
170
- end
171
-
172
- { name: component_name, props: component_props }
173
- end
174
-
175
122
  private
176
123
 
177
124
  # Find the original column definition for a cell
@@ -216,8 +163,6 @@ module Playbook
216
163
  else
217
164
  raw_styling = col[:column_styling] || {}
218
165
  header_alignment = raw_styling[:header_alignment]
219
- header_background_color = raw_styling[:header_background_color]
220
- header_font_color = raw_styling[:header_font_color]
221
166
 
222
167
  colspan = 1
223
168
  cell_hash = {
@@ -227,8 +172,6 @@ module Playbook
227
172
  sort_menu: col[:sort_menu],
228
173
  is_last_in_group: is_last && current_depth.positive?,
229
174
  header_alignment: header_alignment,
230
- header_background_color: header_background_color,
231
- header_font_color: header_font_color,
232
175
  }
233
176
  cell_hash[:id] = col[:id] if col[:id].present?
234
177
  rows[current_depth] << cell_hash
@@ -102,16 +102,16 @@ const Background = (props: BackgroundProps): React.ReactElement => {
102
102
  useEffect(() => {
103
103
  const updateResponsiveProps = () => {
104
104
  setResponsiveProps({
105
- backgroundSize: getResponsiveValue(backgroundSize),
106
- backgroundPosition: getResponsiveValue(backgroundPosition),
107
- backgroundRepeat: getResponsiveValue(backgroundRepeat),
108
- backgroundColor: getResponsiveValue(backgroundColor),
109
- imageUrl: getResponsiveValue(imageUrl),
105
+ backgroundSize: getResponsiveValue(props.backgroundSize),
106
+ backgroundPosition: getResponsiveValue(props.backgroundPosition),
107
+ backgroundRepeat: getResponsiveValue(props.backgroundRepeat),
108
+ backgroundColor: getResponsiveValue(props.backgroundColor),
109
+ imageUrl: getResponsiveValue(props.imageUrl),
110
110
  });
111
111
  };
112
112
  window.addEventListener('resize', updateResponsiveProps);
113
113
  return () => window.removeEventListener('resize', updateResponsiveProps);
114
- }, [backgroundSize, backgroundPosition, backgroundRepeat, backgroundColor, imageUrl]);
114
+ }, [props]);
115
115
 
116
116
 
117
117
  // Extract currently applicable responsive values.
@@ -4,6 +4,7 @@ import Background from './_background'
4
4
 
5
5
  const props = {
6
6
  data: { testid: 'background' },
7
+ backgroundColor: null,
7
8
  }
8
9
 
9
10
  it('Should be accessible', async () => {
@@ -41,8 +42,3 @@ test('applies correct overlay class when imageOverlay prop is provided', () => {
41
42
  const kit = renderKit(Background, props, { imageOverlay: 'opacity_6' });
42
43
  expect(kit).toHaveClass('imageoverlay_opacity_6');
43
44
  });
44
-
45
- test('Sets backgroundColor to light as default when no backgroundColor prop is provided', () => {
46
- const kit = renderKit(Background, props);
47
- expect(kit).toHaveClass('pb_background_color_light');
48
- });
@@ -1,3 +1,3 @@
1
- <%= pb_rails("background", props: { padding: "xl" }) do %>
1
+ <%= pb_rails("background", props: { background_color: "light", padding: "xl" }) do %>
2
2
 
3
3
  <% end %>
@@ -3,6 +3,7 @@ import Background from '../../pb_background/_background'
3
3
 
4
4
  const BackgroundLight = (props) => (
5
5
  <Background
6
+ backgroundColor="light"
6
7
  padding="xl"
7
8
  {...props}
8
9
  />
@@ -1,7 +1,7 @@
1
1
  examples:
2
2
 
3
3
  rails:
4
- - background_light: Default
4
+ - background_light: Light
5
5
  - background_white: White
6
6
  - background_gradient: Gradient
7
7
  - background_image: Image
@@ -11,7 +11,7 @@ examples:
11
11
  - background_size: Size
12
12
 
13
13
  react:
14
- - background_light: Default
14
+ - background_light: Light
15
15
  - background_white: White
16
16
  - background_gradient: Gradient
17
17
  - background_image: Image
@@ -1 +1 @@
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/tokens/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/token/colors" target="_blank">here</a>.
@@ -1 +1 @@
1
- Card highlight can pass status, product, and category colors. List of all colors can be viewed <a href="https://playbook.powerapp.cloud/tokens/colors" target="_blank">here</a>.
1
+ Card highlight can pass status, product, and category colors. List of all colors can be viewed <a href="https://playbook.powerapp.cloud/token/colors" target="_blank">here</a>.
@@ -25,11 +25,11 @@ exports[`html structure is correct 1`] = `
25
25
  >
26
26
  <div
27
27
  class="icon_wrapper"
28
- style="vertical-align: middle;"
28
+ style="vertical-align: middle; color: rgb(193, 205, 214);"
29
29
  >
30
30
  <svg
31
31
  aria-label="chevron-down icon"
32
- class="pb_custom_icon svg-inline--fa color_text_lt_lighter svg_lg svg_fw"
32
+ class="pb_custom_icon svg-inline--fa svg_lg svg_fw"
33
33
  color="currentColor"
34
34
  fill="none"
35
35
  height="auto"
@@ -27,12 +27,12 @@ type colorMap = {
27
27
  };
28
28
 
29
29
  const colorMap = {
30
- default:"text_lt_default",
31
- light: "text_lt_light",
32
- lighter: "text_lt_lighter",
33
- link: "primary",
34
- error: "error",
35
- success: "text_dk_success_sm",
30
+ default: "#242B42",
31
+ light: "#687887",
32
+ lighter: "#C1CDD6",
33
+ link: "#0056CF",
34
+ error: "#FF2229",
35
+ success: "#00CA74",
36
36
  };
37
37
 
38
38
  const CollapsibleIcon = ({
@@ -68,10 +68,9 @@ const CollapsibleIcon = ({
68
68
  className="icon_wrapper"
69
69
  key={icon ? showIcon(icon)[0] : "chevron-down"}
70
70
  onClick={(e) => handleIconClick(e)}
71
- style={{ verticalAlign: "middle"}}
71
+ style={{ verticalAlign: "middle", color: color }}
72
72
  >
73
73
  <Icon
74
- color={color}
75
74
  icon={icon ? showIcon(icon)[0] : "chevron-down"}
76
75
  size={iconSize}
77
76
  />
@@ -81,10 +80,9 @@ const CollapsibleIcon = ({
81
80
  className="icon_wrapper"
82
81
  key={icon ? showIcon(icon)[1] : "chevron-up"}
83
82
  onClick={(e) => handleIconClick(e)}
84
- style={{ verticalAlign: "middle" }}
83
+ style={{ verticalAlign: "middle", color: color }}
85
84
  >
86
85
  <Icon
87
- color={color}
88
86
  icon={icon ? showIcon(icon)[1] : "chevron-up"}
89
87
  size={iconSize}
90
88
  />
@@ -7,6 +7,7 @@ const CollapsibleIcons = (props) => {
7
7
  <>
8
8
  <Collapsible
9
9
  icon={['plus','minus']}
10
+ iconColor='white'
10
11
  >
11
12
  <Collapsible.Main {...props}>
12
13
  <div>{'Main Section'}</div>
@@ -22,6 +22,7 @@ const CollapsibleState = (props) => {
22
22
  <Collapsible
23
23
  collapsed={isCollapsed}
24
24
  icon={["plus", "minus"]}
25
+ iconColor='white'
25
26
  padding="none"
26
27
  >
27
28
  <Collapsible.Main padding="sm"
@@ -40,6 +41,7 @@ const CollapsibleState = (props) => {
40
41
  <Collapsible
41
42
  collapsed={isCollapsed}
42
43
  icon={["plus", "minus"]}
44
+ iconColor='white'
43
45
  padding="none"
44
46
  >
45
47
  <Collapsible.Main padding="sm"
@@ -58,6 +60,7 @@ const CollapsibleState = (props) => {
58
60
  <Collapsible
59
61
  collapsed={isCollapsed}
60
62
  icon={["plus", "minus"]}
63
+ iconColor='white'
61
64
  padding="none"
62
65
  >
63
66
  <Collapsible.Main padding="sm"
@@ -61,9 +61,7 @@ type ContactProps = {
61
61
  data?: { [key: string]: string }
62
62
  dark?: boolean
63
63
  htmlOptions?: { [key: string]: string | number | boolean | (() => void) }
64
- iconEnabled?: boolean
65
64
  id?: string
66
- unstyled?: boolean
67
65
  }
68
66
 
69
67
  const Contact = (props: ContactProps): React.ReactElement => {
@@ -76,9 +74,7 @@ const Contact = (props: ContactProps): React.ReactElement => {
76
74
  data = {},
77
75
  dark = false,
78
76
  htmlOptions = {},
79
- iconEnabled = true,
80
77
  id,
81
- unstyled = false,
82
78
  } = props
83
79
  const ariaProps = buildAriaProps(aria)
84
80
  const dataProps = buildDataProps(data)
@@ -89,51 +85,6 @@ const Contact = (props: ContactProps): React.ReactElement => {
89
85
  className
90
86
  )
91
87
 
92
- const formattedValue = formatContact(contactValue, contactType)
93
- const content = (
94
- <>
95
- {iconEnabled && (contactType === 'email' ? (
96
- <Icon
97
- className="svg-inline--fa envelope"
98
- customIcon={envelopeIcon}
99
- dark={dark}
100
- fixedWidth
101
- />
102
- ) : (
103
- <Icon
104
- dark={dark}
105
- fixedWidth
106
- icon={contactTypeMap[contactType] || 'phone'}
107
- />
108
- ))}
109
- {iconEnabled ? ` ${formattedValue} ` : formattedValue}
110
- {contactDetail && (
111
- <Caption
112
- dark={dark}
113
- size="xs"
114
- tag="span"
115
- text={contactDetail}
116
- />
117
- )}
118
- </>
119
- )
120
-
121
- // When unstyled, render just the content without Body wrapper
122
- if (unstyled) {
123
- return (
124
- <span
125
- {...ariaProps}
126
- {...dataProps}
127
- {...htmlProps}
128
- className={classes}
129
- id={id}
130
- >
131
- {content}
132
- </span>
133
- )
134
- }
135
-
136
- // Default styled mode with Body wrapper
137
88
  return (
138
89
  <div
139
90
  {...ariaProps}
@@ -144,11 +95,33 @@ const Contact = (props: ContactProps): React.ReactElement => {
144
95
  >
145
96
  <Body
146
97
  className="pb_contact_kit"
147
- color="light"
98
+ color={"light"}
148
99
  dark={dark}
149
100
  tag="span"
150
101
  >
151
- {content}
102
+ {contactType === 'email' ? (
103
+ <Icon
104
+ className="svg-inline--fa envelope"
105
+ customIcon={envelopeIcon}
106
+ dark={dark}
107
+ fixedWidth
108
+ />
109
+ ) : (
110
+ <Icon
111
+ dark={dark}
112
+ fixedWidth
113
+ icon={contactTypeMap[contactType] || 'phone'}
114
+ />
115
+ )}
116
+ {` ${formatContact(contactValue, contactType)} `}
117
+ {contactDetail && (
118
+ <Caption
119
+ dark={dark}
120
+ size="xs"
121
+ tag="span"
122
+ text={contactDetail}
123
+ />
124
+ )}
152
125
  </Body>
153
126
  </div>
154
127
  )
@@ -1,23 +1,24 @@
1
- <% if object.unstyled %>
2
- <%= content_tag :span, class: object.classname, id: object.id, data: object.data, aria: object.aria, **object.html_options do %>
3
- <% if icon_enabled %>
4
- <% if contact_type == "email" %>
5
- <%= pb_rails("icon", props: {
6
- custom_icon: Playbook::Engine::root.join(envelope_path),
7
- fixed_width: true,
8
- dark: object.dark
9
- }) %>
10
- <% else %>
11
- <%= pb_rails("icon", props: {
12
- icon: object.contact_icon,
13
- fixed_width: true,
14
- dark: object.dark
15
- }) %>
16
- <% end %>
17
- <%= " #{object.formatted_contact_value}" if object.contact_value %>
1
+ <%= pb_content_tag do %>
2
+ <%= pb_rails("body", props: {
3
+ tag: "span",
4
+ classname: "pb_contact_kit",
5
+ color: "light",
6
+ dark: object.dark
7
+ }) do %>
8
+ <% if contact_type == "email" %>
9
+ <%= pb_rails("icon", props: {
10
+ custom_icon: Playbook::Engine::root.join(envelope_path),
11
+ fixed_width: true,
12
+ dark: object.dark
13
+ }) %>
18
14
  <% else %>
19
- <%= object.formatted_contact_value if object.contact_value %>
15
+ <%= pb_rails("icon", props: {
16
+ icon: object.contact_icon,
17
+ fixed_width: true,
18
+ dark: object.dark
19
+ }) %>
20
20
  <% end %>
21
+ <%= object.formatted_contact_value if object.contact_value %>
21
22
 
22
23
  <%= pb_rails("caption", props: {
23
24
  text: object.contact_detail,
@@ -26,39 +27,4 @@
26
27
  dark: object.dark
27
28
  }) if object.contact_detail %>
28
29
  <% end %>
29
- <% else %>
30
- <%= pb_content_tag do %>
31
- <%= pb_rails("body", props: {
32
- tag: "span",
33
- classname: "pb_contact_kit",
34
- color: "light",
35
- dark: object.dark
36
- }) do %>
37
- <% if icon_enabled %>
38
- <% if contact_type == "email" %>
39
- <%= pb_rails("icon", props: {
40
- custom_icon: Playbook::Engine::root.join(envelope_path),
41
- fixed_width: true,
42
- dark: object.dark
43
- }) %>
44
- <% else %>
45
- <%= pb_rails("icon", props: {
46
- icon: object.contact_icon,
47
- fixed_width: true,
48
- dark: object.dark
49
- }) %>
50
- <% end %>
51
- <%= " #{object.formatted_contact_value}" if object.contact_value %>
52
- <% else %>
53
- <%= object.formatted_contact_value if object.contact_value %>
54
- <% end %>
55
-
56
- <%= pb_rails("caption", props: {
57
- text: object.contact_detail,
58
- tag: 'span',
59
- size: 'xs',
60
- dark: object.dark
61
- }) if object.contact_detail %>
62
- <% end %>
63
- <% end %>
64
30
  <% end %>
@@ -8,8 +8,6 @@ module Playbook
8
8
  prop :contact_type
9
9
  prop :contact_value
10
10
  prop :contact_detail
11
- prop :icon_enabled, type: Playbook::Props::Boolean, default: true
12
- prop :unstyled, type: Playbook::Props::Boolean, default: false
13
11
 
14
12
  def classname
15
13
  generate_classname("pb_contact_kit")
@@ -46,15 +44,7 @@ module Playbook
46
44
  elsif contact_type == "international"
47
45
  contact_value
48
46
  else
49
- # Check if number has leading 1 (US country code)
50
- # Format like "+1 (212) 555-1234"
51
- intl_code = ""
52
- cleaned_number = formatted_value
53
- if cleaned_number.length == 11 && cleaned_number.start_with?("1")
54
- intl_code = "+1 "
55
- cleaned_number = cleaned_number.sub(/^1/, "")
56
- end
57
- "#{intl_code}#{number_to_phone(cleaned_number, area_code: true)}"
47
+ number_to_phone(formatted_value, area_code: true)
58
48
  end
59
49
  end
60
50
 
@@ -149,79 +149,3 @@ test('international contact type preserves original format', () => {
149
149
  const kit = screen.getByTestId('test-international-format')
150
150
  expect(kit).toHaveTextContent('+44 20 7946 0958')
151
151
  })
152
-
153
- test('iconEnabled prop hides icon when false', () => {
154
- render(
155
- <>
156
- <Contact
157
- contactType="home"
158
- contactValue="2125551234"
159
- data={{ testid: 'test-with-icon' }}
160
- iconEnabled
161
- />
162
- <Contact
163
- contactType="home"
164
- contactValue="2125551234"
165
- data={{ testid: 'test-without-icon' }}
166
- iconEnabled={false}
167
- />
168
- </>
169
- )
170
-
171
- // With icon enabled, should have icon
172
- expect(screen.getByTestId('test-with-icon').querySelector('.pb_custom_icon')).toBeInTheDocument()
173
-
174
- // Without icon, should not have icon
175
- expect(screen.getByTestId('test-without-icon').querySelector('.pb_custom_icon')).not.toBeInTheDocument()
176
-
177
- // But should still have the formatted phone number
178
- expect(screen.getByTestId('test-without-icon')).toHaveTextContent('(212) 555-1234')
179
- })
180
-
181
- test('unstyled prop renders without Body wrapper', () => {
182
- render(
183
- <>
184
- <Contact
185
- contactType="home"
186
- contactValue="2125551234"
187
- data={{ testid: 'test-styled' }}
188
- />
189
- <Contact
190
- contactType="home"
191
- contactValue="2125551234"
192
- data={{ testid: 'test-unstyled' }}
193
- unstyled
194
- />
195
- </>
196
- )
197
-
198
- // Styled version should have Body wrapper with pb_contact_kit class
199
- const styled = screen.getByTestId('test-styled')
200
- const styledBody = styled.querySelector('span.pb_contact_kit')
201
- expect(styledBody).toBeInTheDocument()
202
- expect(styledBody).toHaveTextContent('(212) 555-1234')
203
-
204
- // Unstyled version should be a span without Body wrapper
205
- const unstyled = screen.getByTestId('test-unstyled')
206
- expect(unstyled.tagName).toBe('SPAN')
207
- expect(unstyled.querySelector('span.pb_contact_kit')).not.toBeInTheDocument()
208
- expect(unstyled).toHaveTextContent('(212) 555-1234')
209
- })
210
-
211
- test('unstyled and iconEnabled work together', () => {
212
- render(
213
- <Contact
214
- contactType="home"
215
- contactValue="2125551234"
216
- data={{ testid: 'test-unstyled-no-icon' }}
217
- iconEnabled={false}
218
- unstyled
219
- />
220
- )
221
-
222
- const kit = screen.getByTestId('test-unstyled-no-icon')
223
- expect(kit.tagName).toBe('SPAN')
224
- expect(kit.querySelector('.pb_custom_icon')).not.toBeInTheDocument()
225
- expect(kit.querySelector('.pb_body_kit')).not.toBeInTheDocument()
226
- expect(kit).toHaveTextContent('(212) 555-1234')
227
- })
@@ -3,13 +3,11 @@ examples:
3
3
  rails:
4
4
  - contact_default: Default
5
5
  - contact_with_detail: Detail Indicator
6
- - contact_unstyled: Unstyled
7
6
 
8
7
 
9
8
  react:
10
9
  - contact_default: Default
11
10
  - contact_with_detail: Detail Indicator
12
- - contact_unstyled: Unstyled
13
11
 
14
12
 
15
13
  swift:
@@ -1,3 +1,2 @@
1
1
  export { default as ContactDefault } from './_contact_default.jsx'
2
2
  export { default as ContactWithDetail } from './_contact_with_detail.jsx'
3
- export { default as ContactUnstyled } from './_contact_unstyled.jsx'
@@ -251,28 +251,4 @@ describe('DatePicker Kit', () => {
251
251
  expect(input).toHaveValue(DateTime.getYearStartDate(new Date()).formatDate() + " to " + new Date().formatDate())
252
252
  })
253
253
  })
254
-
255
-
256
- test('displays defaultDate when it is later than maxDate', async () => {
257
- const testId = 'datepicker-out-of-range-after'
258
- const futureDateString = '01/15/2020'
259
- const maxDateString = '01/10/2020'
260
-
261
- render(
262
- <DatePicker
263
- data={{ testid: testId }}
264
- defaultDate={futureDateString}
265
- format="m/d/Y"
266
- maxDate={maxDateString}
267
- pickerId="date-picker-out-of-range-after"
268
- />
269
- )
270
-
271
- const kit = screen.getByTestId(testId)
272
- const input = within(kit).getByPlaceholderText('Select Date')
273
-
274
- await waitFor(() => {
275
- expect(input).toHaveValue('01/15/2020')
276
- }, { timeout: 5000 })
277
- })
278
254
  })