playbook_ui 15.5.0 → 15.6.0.pre.alpha.PLAY2686contactkittextonly13049

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 (122) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +96 -6
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +1 -1
  4. data/app/pb_kits/playbook/pb_background/_background.tsx +6 -6
  5. data/app/pb_kits/playbook/pb_background/background.test.js +5 -1
  6. data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +1 -1
  7. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +0 -1
  8. data/app/pb_kits/playbook/pb_background/docs/_background_light.md +1 -0
  9. data/app/pb_kits/playbook/pb_background/docs/example.yml +2 -2
  10. data/app/pb_kits/playbook/pb_card/docs/_card_header.md +1 -1
  11. data/app/pb_kits/playbook/pb_card/docs/_card_highlight.md +1 -1
  12. data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +2 -2
  13. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleIcon.tsx +10 -8
  14. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_icons.jsx +0 -1
  15. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_state.jsx +0 -3
  16. data/app/pb_kits/playbook/pb_contact/_contact.tsx +51 -24
  17. data/app/pb_kits/playbook/pb_contact/contact.html.erb +53 -19
  18. data/app/pb_kits/playbook/pb_contact/contact.rb +11 -1
  19. data/app/pb_kits/playbook/pb_contact/contact.test.js +76 -0
  20. data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled.html.erb +33 -0
  21. data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled.jsx +46 -0
  22. data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled_rails.md +2 -0
  23. data/app/pb_kits/playbook/pb_contact/docs/_contact_unstyled_react.md +2 -0
  24. data/app/pb_kits/playbook/pb_contact/docs/example.yml +2 -0
  25. data/app/pb_kits/playbook/pb_contact/docs/index.js +1 -0
  26. data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +24 -0
  27. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +181 -3
  28. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.html.erb +31 -0
  29. data/app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_custom_colors.md +1 -1
  30. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +458 -7
  31. data/app/pb_kits/playbook/pb_draggable/context/types.ts +8 -3
  32. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_dropzone.jsx +180 -0
  33. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_dropzone.md +22 -0
  34. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +3 -2
  35. data/app/pb_kits/playbook/pb_draggable/docs/index.js +2 -1
  36. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +77 -1
  37. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +4 -4
  38. data/app/pb_kits/playbook/pb_filter/Filter/FilterBackground.tsx +3 -3
  39. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +34 -22
  40. data/app/pb_kits/playbook/pb_home_address_street/city_emphasis.html.erb +16 -12
  41. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default.html.erb +1 -1
  42. data/app/pb_kits/playbook/pb_home_address_street/none_emphasis.html.erb +16 -12
  43. data/app/pb_kits/playbook/pb_home_address_street/street_emphasis.html.erb +16 -12
  44. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +10 -0
  45. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.tsx +66 -15
  46. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.jsx +42 -0
  47. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.md +1 -0
  48. data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +1 -0
  49. data/app/pb_kits/playbook/pb_multiple_users/docs/index.js +1 -0
  50. data/app/pb_kits/playbook/pb_multiple_users/multiple_users.test.js +25 -0
  51. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +44 -10
  52. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.html.erb +34 -4
  53. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.jsx +16 -7
  54. data/app/pb_kits/playbook/pb_radio/docs/_radio_error.md +1 -1
  55. data/app/pb_kits/playbook/pb_select/_select.tsx +8 -3
  56. data/app/pb_kits/playbook/pb_select/docs/_select_error.md +1 -1
  57. data/app/pb_kits/playbook/pb_select/docs/_select_input_options.html.erb +16 -0
  58. data/app/pb_kits/playbook/pb_select/docs/_select_input_options.jsx +30 -0
  59. data/app/pb_kits/playbook/pb_select/docs/_select_input_options.md +1 -0
  60. data/app/pb_kits/playbook/pb_select/docs/example.yml +2 -0
  61. data/app/pb_kits/playbook/pb_select/docs/index.js +1 -0
  62. data/app/pb_kits/playbook/pb_select/select.html.erb +2 -2
  63. data/app/pb_kits/playbook/pb_select/select.rb +3 -1
  64. data/app/pb_kits/playbook/pb_select/select.test.js +23 -0
  65. data/app/pb_kits/playbook/pb_table/_table.tsx +187 -33
  66. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant.jsx +134 -0
  67. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant.md +34 -0
  68. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_rails.html.erb +101 -0
  69. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_rails.md +33 -0
  70. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination.jsx +180 -0
  71. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination.md +3 -0
  72. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.html.erb +122 -0
  73. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.md +3 -0
  74. data/app/pb_kits/playbook/pb_table/docs/example.yml +4 -0
  75. data/app/pb_kits/playbook/pb_table/docs/index.js +2 -0
  76. data/app/pb_kits/playbook/pb_table/styles/_vertical_border.scss +49 -0
  77. data/app/pb_kits/playbook/pb_table/table.html.erb +68 -12
  78. data/app/pb_kits/playbook/pb_table/table.rb +22 -3
  79. data/app/pb_kits/playbook/pb_table/table.test.js +143 -0
  80. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.md +1 -1
  81. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.md +1 -1
  82. data/app/pb_kits/playbook/pb_timeline/_item.tsx +3 -0
  83. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.html.erb +60 -0
  84. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.jsx +118 -0
  85. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.md +1 -0
  86. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_date.md +1 -1
  87. data/app/pb_kits/playbook/pb_timeline/docs/example.yml +2 -0
  88. data/app/pb_kits/playbook/pb_timeline/docs/index.js +1 -0
  89. data/app/pb_kits/playbook/pb_timeline/item.html.erb +1 -1
  90. data/app/pb_kits/playbook/pb_timeline/item.rb +2 -0
  91. data/app/pb_kits/playbook/pb_timeline/label.html.erb +2 -1
  92. data/app/pb_kits/playbook/pb_timeline/label.rb +2 -0
  93. data/app/pb_kits/playbook/pb_timeline/subcomponents/Label.tsx +3 -0
  94. data/app/pb_kits/playbook/pb_timeline/timeline.test.js +51 -0
  95. data/app/pb_kits/playbook/pb_typeahead/_typeahead.test.jsx +15 -0
  96. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +3 -0
  97. data/app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.tsx +13 -2
  98. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +6 -1
  99. data/app/pb_kits/playbook/pb_typeahead/components/ValueContainer.tsx +34 -7
  100. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.html.erb +30 -0
  101. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.jsx +37 -0
  102. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_input_display.md +3 -0
  103. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +2 -0
  104. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +2 -1
  105. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +6 -1
  106. data/app/pb_kits/playbook/tokens/_colors.scss +2 -1
  107. data/app/pb_kits/playbook/utilities/deprecated.ts +73 -0
  108. data/dist/chunks/_typeahead-CHwm9MTE.js +6 -0
  109. data/dist/chunks/lib-Cugvy62C.js +29 -0
  110. data/dist/chunks/vendor.js +3 -3
  111. data/dist/playbook-rails-react-bindings.js +1 -1
  112. data/dist/playbook-rails.js +1 -1
  113. data/dist/playbook.css +1 -1
  114. data/lib/playbook/forms/builder/collection_select_field.rb +9 -1
  115. data/lib/playbook/forms/builder/select_field.rb +9 -1
  116. data/lib/playbook/forms/builder/time_zone_select_field.rb +9 -1
  117. data/lib/playbook/pb_kit_helper.rb +35 -0
  118. data/lib/playbook/version.rb +2 -2
  119. metadata +31 -5
  120. data/app/pb_kits/playbook/pb_bar_graph/BarGraphStyles.scss +0 -58
  121. data/dist/chunks/_typeahead-Bx4QsIEU.js +0 -6
  122. data/dist/chunks/lib-Dk4GKPut.js +0 -29
@@ -0,0 +1,30 @@
1
+ <%
2
+ options = [
3
+ { label: 'Orange', value: '#FFA500' },
4
+ { label: 'Red', value: '#FF0000' },
5
+ { label: 'Green', value: '#00FF00' },
6
+ { label: 'Blue', value: '#0000FF' },
7
+ { label: 'Yellow', value: '#FFFF00' },
8
+ { label: 'Purple', value: '#800080' },
9
+ { label: 'Cyan', value: '#00FFFF' },
10
+ { label: 'Magenta', value: '#FF00FF' }
11
+ ]
12
+ %>
13
+
14
+ <%= pb_rails("typeahead", props: {
15
+ id: "typeahead-input-display-none",
16
+ label: "With Input Display None",
17
+ options: options,
18
+ name: :foo,
19
+ input_display: "none",
20
+ })
21
+ %>
22
+ <br/>
23
+ <%= pb_rails("typeahead", props: {
24
+ id: "typeahead-input-display-pills",
25
+ label: "With Input Display Pills (Default)",
26
+ options: options,
27
+ name: :foo,
28
+ pills: true,
29
+ })
30
+ %>
@@ -0,0 +1,37 @@
1
+ import React from 'react'
2
+
3
+ import Typeahead from '../_typeahead'
4
+
5
+ const options = [
6
+ { label: 'Orange', value: '#FFA500' },
7
+ { label: 'Red', value: '#FF0000' },
8
+ { label: 'Green', value: '#00FF00' },
9
+ { label: 'Blue', value: '#0000FF' },
10
+ { label: 'Yellow', value: '#FFFF00' },
11
+ { label: 'Purple', value: '#800080' },
12
+ { label: 'Cyan', value: '#00FFFF' },
13
+ { label: 'Magenta', value: '#FF00FF' }
14
+ ]
15
+
16
+ const TypeaheadInputDisplay = (props) => {
17
+ return (
18
+ <>
19
+ <Typeahead
20
+ inputDisplay="none"
21
+ isMulti
22
+ label="With Input Display None"
23
+ options={options}
24
+ {...props}
25
+ />
26
+ <br/>
27
+ <Typeahead
28
+ isMulti
29
+ label="With Input Display Pills (Default)"
30
+ options={options}
31
+ {...props}
32
+ />
33
+ </>
34
+ )
35
+ }
36
+
37
+ export default TypeaheadInputDisplay
@@ -0,0 +1,3 @@
1
+ Use the `inputDisplay`/`input_display` prop to optionally display only the count in the display as opposed to multiple pills. This prop is set to 'pills' by default.
2
+
3
+ **NOTE**: `inputDisplay`/`input_display` should only be used with typeaheads that allow multi selection.
@@ -5,6 +5,7 @@ examples:
5
5
  - typeahead_default_options: With Default Options
6
6
  - typeahead_with_context: With Context
7
7
  - typeahead_with_pills: With Pills
8
+ - typeahead_input_display: Input Display
8
9
  - typeahead_without_pills: Without Pills (Single Select)
9
10
  - typeahead_with_pills_async: With Pills (Async Data)
10
11
  - typeahead_with_pills_async_users: With Pills (Async Data w/ Users)
@@ -26,6 +27,7 @@ examples:
26
27
  - typeahead_react_hook: React Hook
27
28
  - typeahead_with_highlight: With Highlight
28
29
  - typeahead_with_pills: With Pills
30
+ - typeahead_input_display: Input Display
29
31
  - typeahead_with_pills_async: With Pills (Async Data)
30
32
  - typeahead_with_pills_async_users: With Pills (Async Data w/ Users)
31
33
  - typeahead_with_pills_async_custom_options: With Pills (Async Data w/ Custom Options)
@@ -17,4 +17,5 @@ export { default as TypeaheadReactHook } from './_typeahead_react_hook.jsx'
17
17
  export { default as TypeaheadDisabled } from './_typeahead_disabled.jsx'
18
18
  export { default as TypeaheadPreserveInput } from './_typeahead_preserve_input.jsx'
19
19
  export { default as TypeaheadDefaultValue } from './_typeahead_default_value.jsx'
20
- export { default as TypeaheadCustomOptions } from './_typeahead_custom_options.jsx'
20
+ export { default as TypeaheadCustomOptions } from './_typeahead_custom_options.jsx'
21
+ export { default as TypeaheadInputDisplay } from './_typeahead_input_display.jsx'
@@ -25,6 +25,10 @@ module Playbook
25
25
  prop :is_multi, type: Playbook::Props::Boolean,
26
26
  default: true
27
27
 
28
+ prop :input_display, type: Playbook::Props::Enum,
29
+ values: %w[none pills],
30
+ default: "pills"
31
+
28
32
  prop :pills, type: Playbook::Props::Boolean,
29
33
  default: false
30
34
 
@@ -78,7 +82,7 @@ module Playbook
78
82
  end
79
83
 
80
84
  def is_react?
81
- pills || !is_multi || wrapped
85
+ pills || !is_multi || wrapped || input_display == "none"
82
86
  end
83
87
 
84
88
  def typeahead_react_options
@@ -91,6 +95,7 @@ module Playbook
91
95
  id: id,
92
96
  inline: inline,
93
97
  isMulti: is_multi,
98
+ inputDisplay: input_display,
94
99
  label: label,
95
100
  marginBottom: margin_bottom,
96
101
  multiKit: multi_kit,
@@ -139,7 +139,8 @@ $text_colors: (
139
139
  text_lt_lighter: $text_lt_lighter,
140
140
  text_dk_default: $text_dk_default,
141
141
  text_dk_light: $text_dk_light,
142
- text_dk_lighter: $text_dk_lighter
142
+ text_dk_lighter: $text_dk_lighter,
143
+ text_dk_success_sm: $text_dk_success_sm
143
144
  );
144
145
 
145
146
  /* Data colors ------------------------*/
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Tracks which deprecated kits have already logged warnings in this session
3
+ * to ensure we only log once per page load per kit
4
+ */
5
+ const warnedKits = new Set<string>();
6
+
7
+ /**
8
+ * Logs a deprecation warning for a Playbook kit
9
+ * - Only logs once per kit per page load (prevents spam on re-renders)
10
+ * - Only logs in development mode (not in production or test environments)
11
+ *
12
+ * @param kitName - The name of the deprecated kit (e.g., 'BarGraph', 'RichTextEditor')
13
+ * @param message - Optional custom deprecation message. If not provided, uses a default message.
14
+ *
15
+ * @example
16
+ * // In your kit component:
17
+ * useEffect(() => {
18
+ * deprecatedKitWarning('BarGraph');
19
+ * }, []);
20
+ */
21
+ export const deprecatedKitWarning = (
22
+ kitName: string,
23
+ message?: string
24
+ ): void => {
25
+ // Skip in test environments (Jest sets NODE_ENV to 'test')
26
+ if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'test') {
27
+ return;
28
+ }
29
+
30
+ // In browser environments, check if we're on localhost/dev
31
+ if (typeof window !== 'undefined') {
32
+ const hostname = window.location?.hostname;
33
+ const isLocalDev = hostname === 'localhost' ||
34
+ hostname === '127.0.0.1' ||
35
+ hostname?.endsWith('.local') ||
36
+ hostname?.includes('local.') ||
37
+ !hostname; // file:// protocol
38
+
39
+ // Only show warnings in local development
40
+ if (!isLocalDev) {
41
+ return;
42
+ }
43
+ }
44
+
45
+ // Only warn once per kit per page load
46
+ if (warnedKits.has(kitName)) {
47
+ return;
48
+ }
49
+
50
+ // Mark this kit as warned
51
+ warnedKits.add(kitName);
52
+
53
+ // Build the warning message
54
+ const baseMessage = `PLAYBOOK DEPRECATION WARNING
55
+ ----------------------------
56
+ The "${kitName}" kit is deprecated and will be removed in a future version.`;
57
+
58
+ const fullMessage = message
59
+ ? `${baseMessage} ${message}`
60
+ : `${baseMessage} Please migrate to the recommended alternative
61
+
62
+ `;
63
+
64
+ console.warn(fullMessage);
65
+ };
66
+
67
+ /**
68
+ * Resets the warned kits tracker (useful for testing)
69
+ * @internal
70
+ */
71
+ export const resetDeprecationWarnings = (): void => {
72
+ warnedKits.clear();
73
+ };