playbook_ui 15.6.0 → 15.7.0.pre.rc.1

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_card/docs/_card_header.md +1 -1
  3. data/app/pb_kits/playbook/pb_card/docs/_card_highlight.md +1 -1
  4. data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +2 -2
  5. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleIcon.tsx +10 -8
  6. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_icons.jsx +0 -1
  7. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_state.jsx +0 -3
  8. data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +24 -0
  9. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +181 -3
  10. data/app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_custom_colors.md +1 -1
  11. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +316 -15
  12. data/app/pb_kits/playbook/pb_draggable/context/types.ts +1 -1
  13. data/app/pb_kits/playbook/pb_filter/Filter/FilterBackground.tsx +3 -3
  14. data/app/pb_kits/playbook/pb_radio/docs/_radio_error.md +1 -1
  15. data/app/pb_kits/playbook/pb_select/_select.tsx +8 -3
  16. data/app/pb_kits/playbook/pb_select/docs/_select_error.md +1 -1
  17. data/app/pb_kits/playbook/pb_select/docs/_select_input_options.html.erb +16 -0
  18. data/app/pb_kits/playbook/pb_select/docs/_select_input_options.jsx +30 -0
  19. data/app/pb_kits/playbook/pb_select/docs/_select_input_options.md +1 -0
  20. data/app/pb_kits/playbook/pb_select/docs/example.yml +2 -0
  21. data/app/pb_kits/playbook/pb_select/docs/index.js +1 -0
  22. data/app/pb_kits/playbook/pb_select/select.html.erb +2 -2
  23. data/app/pb_kits/playbook/pb_select/select.rb +3 -1
  24. data/app/pb_kits/playbook/pb_select/select.test.js +23 -0
  25. data/app/pb_kits/playbook/pb_table/_table.tsx +187 -33
  26. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant.jsx +134 -0
  27. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant.md +34 -0
  28. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_rails.html.erb +101 -0
  29. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_rails.md +33 -0
  30. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination.jsx +180 -0
  31. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination.md +3 -0
  32. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.html.erb +122 -0
  33. data/app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.md +3 -0
  34. data/app/pb_kits/playbook/pb_table/docs/example.yml +4 -0
  35. data/app/pb_kits/playbook/pb_table/docs/index.js +2 -0
  36. data/app/pb_kits/playbook/pb_table/table.html.erb +68 -12
  37. data/app/pb_kits/playbook/pb_table/table.rb +22 -3
  38. data/app/pb_kits/playbook/pb_table/table.test.js +143 -0
  39. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.md +1 -1
  40. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.md +1 -1
  41. data/app/pb_kits/playbook/pb_timeline/_item.tsx +3 -0
  42. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.html.erb +60 -0
  43. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.jsx +118 -0
  44. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.md +1 -0
  45. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_date.md +1 -1
  46. data/app/pb_kits/playbook/pb_timeline/docs/example.yml +2 -0
  47. data/app/pb_kits/playbook/pb_timeline/docs/index.js +1 -0
  48. data/app/pb_kits/playbook/pb_timeline/item.html.erb +1 -1
  49. data/app/pb_kits/playbook/pb_timeline/item.rb +2 -0
  50. data/app/pb_kits/playbook/pb_timeline/label.html.erb +2 -1
  51. data/app/pb_kits/playbook/pb_timeline/label.rb +2 -0
  52. data/app/pb_kits/playbook/pb_timeline/subcomponents/Label.tsx +3 -0
  53. data/app/pb_kits/playbook/pb_timeline/timeline.test.js +51 -0
  54. data/app/pb_kits/playbook/tokens/_colors.scss +2 -1
  55. data/app/pb_kits/playbook/utilities/deprecated.ts +73 -0
  56. data/dist/chunks/_typeahead-CHwm9MTE.js +6 -0
  57. data/dist/chunks/lib-Cugvy62C.js +29 -0
  58. data/dist/chunks/vendor.js +2 -2
  59. data/dist/playbook-rails-react-bindings.js +1 -1
  60. data/dist/playbook-rails.js +1 -1
  61. data/dist/playbook.css +1 -1
  62. data/lib/playbook/forms/builder/collection_select_field.rb +9 -1
  63. data/lib/playbook/forms/builder/select_field.rb +9 -1
  64. data/lib/playbook/forms/builder/time_zone_select_field.rb +9 -1
  65. data/lib/playbook/pb_kit_helper.rb +35 -0
  66. data/lib/playbook/version.rb +2 -2
  67. metadata +19 -4
  68. data/dist/chunks/_typeahead-DecTL7bt.js +0 -6
  69. data/dist/chunks/lib-Dk4GKPut.js +0 -29
@@ -4,10 +4,18 @@ module Playbook
4
4
  module Forms
5
5
  class Builder
6
6
  def collection_select(name, collection, value_method, text_method, options = {}, html_options = {}, props: {})
7
- props[:label] = @template.label(@object_name, name) if props[:label] == true
7
+ props[:input_options] ||= {}
8
+ props[:input_options][:id] ||= "#{@object_name}_#{name}"
9
+
10
+ props[:label] = @template.label(@object_name, name, for: props[:input_options][:id]) if props[:label] == true
11
+
8
12
  options[:skip_default_ids] = false unless options.key?(:skip_default_ids)
9
13
  options[:prompt] = props[:blank_selection] || ""
10
14
  html_options[:required] = "required" if props[:required]
15
+ html_options[:id] = props[:input_options][:id]
16
+ html_options[:class] = props[:input_options][:class] if props[:input_options][:class]
17
+ html_options[:data] = (html_options[:data] || {}).merge(props[:input_options][:data] || {})
18
+
11
19
  input = super(name, collection, value_method, text_method, options, html_options)
12
20
 
13
21
  @template.pb_rails("select", props: props) do
@@ -4,10 +4,18 @@ module Playbook
4
4
  module Forms
5
5
  class Builder
6
6
  def select(name, choices = nil, options = {}, html_options = {}, props: {}, &block)
7
- props[:label] = @template.label(@object_name, name) if props[:label] == true
7
+ props[:input_options] ||= {}
8
+ props[:input_options][:id] ||= "#{@object_name}_#{name}"
9
+
10
+ props[:label] = @template.label(@object_name, name, for: props[:input_options][:id]) if props[:label] == true
11
+
8
12
  options[:skip_default_ids] = false unless options.key?(:skip_default_ids)
9
13
  options[:prompt] = props[:blank_selection] || ""
10
14
  html_options[:required] = "required" if props[:required]
15
+ html_options[:id] = props[:input_options][:id]
16
+ html_options[:class] = props[:input_options][:class] if props[:input_options][:class]
17
+ html_options[:data] = (html_options[:data] || {}).merge(props[:input_options][:data] || {})
18
+
11
19
  input = super(name, choices, options, html_options, &block)
12
20
 
13
21
  @template.pb_rails("select", props: props) do
@@ -4,10 +4,18 @@ module Playbook
4
4
  module Forms
5
5
  class Builder
6
6
  def time_zone_select_field(name, choices = {}, options = {}, html_options = {}, props: {})
7
- props[:label] = @template.label(@object_name, name) if props[:label] == true
7
+ props[:input_options] ||= {}
8
+ props[:input_options][:id] ||= "#{@object_name}_#{name}"
9
+
10
+ props[:label] = @template.label(@object_name, name, for: props[:input_options][:id]) if props[:label] == true
11
+
8
12
  options[:skip_default_ids] = false unless options.key?(:skip_default_ids)
9
13
  options[:prompt] = props[:blank_selection] || ""
10
14
  html_options[:required] = "required" if props[:required]
15
+ html_options[:id] = props[:input_options][:id]
16
+ html_options[:class] = props[:input_options][:class] if props[:input_options][:class]
17
+ html_options[:data] = (html_options[:data] || {}).merge(props[:input_options][:data] || {})
18
+
11
19
  input = @template.time_zone_select(@object_name, name, choices, options, html_options)
12
20
 
13
21
  @template.pb_rails("select", props: props) do
@@ -13,5 +13,40 @@ module Playbook
13
13
  render kit.new(props, &block), &block
14
14
  end
15
15
  end
16
+
17
+ def deprecated_kit_warning(kit_name, message = nil)
18
+ # Skip in test and production environments
19
+ return "".html_safe if Rails.env.test? || Rails.env.production?
20
+
21
+ # Build the warning message
22
+ base_message = "PLAYBOOK DEPRECATION WARNING\\n ----------------------------\\n The \\\"#{kit_name}\\\" kit is deprecated and will be removed in a future version."
23
+
24
+ full_message = if message
25
+ "#{base_message} #{message}"
26
+ else
27
+ "#{base_message} Please migrate to the recommended alternative"
28
+ end
29
+
30
+ # Escape the message for JavaScript
31
+ escaped_message = full_message.gsub("'", "\\\\'").gsub("\n", "\\n")
32
+
33
+ # Return a self-executing script that checks if we're already warned
34
+ # Uses client-side tracking to ensure one warning per page load
35
+ # Only shows warnings on localhost (matching React behavior)
36
+ script = "<script type=\"text/javascript\">\n"
37
+ script += "(function() {\n"
38
+ script += " var hostname = window.location.hostname;\n"
39
+ script += " var isLocalDev = hostname === 'localhost' || hostname === '127.0.0.1' || hostname.endsWith('.local') || hostname.includes('local.') || !hostname;\n"
40
+ script += " if (!isLocalDev) return;\n"
41
+ script += " if (!window.__PB_WARNED_KITS__) window.__PB_WARNED_KITS__ = new Set();\n"
42
+ script += " if (!window.__PB_WARNED_KITS__.has('#{kit_name}')) {\n"
43
+ script += " window.__PB_WARNED_KITS__.add('#{kit_name}');\n"
44
+ script += " console.warn('#{escaped_message}');\n"
45
+ script += " }\n"
46
+ script += "})();\n"
47
+ script += "</script>"
48
+
49
+ script.html_safe
50
+ end
16
51
  end
17
52
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- PREVIOUS_VERSION = "15.5.0"
5
- VERSION = "15.6.0"
4
+ PREVIOUS_VERSION = "15.6.0"
5
+ VERSION = "15.7.0.pre.rc.1"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 15.6.0
4
+ version: 15.7.0.pre.rc.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-12-05 00:00:00.000000000 Z
12
+ date: 2025-12-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -2935,6 +2935,9 @@ files:
2935
2935
  - app/pb_kits/playbook/pb_select/docs/_select_inline_compact.jsx
2936
2936
  - app/pb_kits/playbook/pb_select/docs/_select_inline_show_arrow.html.erb
2937
2937
  - app/pb_kits/playbook/pb_select/docs/_select_inline_show_arrow.jsx
2938
+ - app/pb_kits/playbook/pb_select/docs/_select_input_options.html.erb
2939
+ - app/pb_kits/playbook/pb_select/docs/_select_input_options.jsx
2940
+ - app/pb_kits/playbook/pb_select/docs/_select_input_options.md
2938
2941
  - app/pb_kits/playbook/pb_select/docs/_select_multiple.html.erb
2939
2942
  - app/pb_kits/playbook/pb_select/docs/_select_multiple.jsx
2940
2943
  - app/pb_kits/playbook/pb_select/docs/_select_multiple.md
@@ -3242,6 +3245,14 @@ files:
3242
3245
  - app/pb_kits/playbook/pb_table/docs/_table_with_dynamic_collapsible.jsx
3243
3246
  - app/pb_kits/playbook/pb_table/docs/_table_with_dynamic_collapsible_rails.md
3244
3247
  - app/pb_kits/playbook/pb_table/docs/_table_with_dynamic_collapsible_react.md
3248
+ - app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant.jsx
3249
+ - app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant.md
3250
+ - app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_rails.html.erb
3251
+ - app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_rails.md
3252
+ - app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination.jsx
3253
+ - app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination.md
3254
+ - app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.html.erb
3255
+ - app/pb_kits/playbook/pb_table/docs/_table_with_filter_variant_with_pagination_rails.md
3245
3256
  - app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless.html.erb
3246
3257
  - app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless.jsx
3247
3258
  - app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless_rails.md
@@ -3426,6 +3437,9 @@ files:
3426
3437
  - app/pb_kits/playbook/pb_timeline/docs/_description.md
3427
3438
  - app/pb_kits/playbook/pb_timeline/docs/_timeline_default.html.erb
3428
3439
  - app/pb_kits/playbook/pb_timeline/docs/_timeline_default.jsx
3440
+ - app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.html.erb
3441
+ - app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.jsx
3442
+ - app/pb_kits/playbook/pb_timeline/docs/_timeline_show_current_year.md
3429
3443
  - app/pb_kits/playbook/pb_timeline/docs/_timeline_vertical.html.erb
3430
3444
  - app/pb_kits/playbook/pb_timeline/docs/_timeline_vertical.jsx
3431
3445
  - app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.html.erb
@@ -3822,6 +3836,7 @@ files:
3822
3836
  - app/pb_kits/playbook/utilities/_truncate.scss
3823
3837
  - app/pb_kits/playbook/utilities/_vertical_align.scss
3824
3838
  - app/pb_kits/playbook/utilities/_width.scss
3839
+ - app/pb_kits/playbook/utilities/deprecated.ts
3825
3840
  - app/pb_kits/playbook/utilities/flexbox_global_props/_align_content.scss
3826
3841
  - app/pb_kits/playbook/utilities/flexbox_global_props/_align_items.scss
3827
3842
  - app/pb_kits/playbook/utilities/flexbox_global_props/_align_self.scss
@@ -3861,9 +3876,9 @@ files:
3861
3876
  - app/pb_kits/playbook/utilities/test/globalProps/truncate.test.js
3862
3877
  - app/pb_kits/playbook/utilities/text.ts
3863
3878
  - app/pb_kits/playbook/utilities/validEmojiChecker.ts
3864
- - dist/chunks/_typeahead-DecTL7bt.js
3879
+ - dist/chunks/_typeahead-CHwm9MTE.js
3865
3880
  - dist/chunks/lazysizes-B7xYodB-.js
3866
- - dist/chunks/lib-Dk4GKPut.js
3881
+ - dist/chunks/lib-Cugvy62C.js
3867
3882
  - dist/chunks/vendor.js
3868
3883
  - dist/menu.yml
3869
3884
  - dist/playbook-rails-react-bindings.js