playbook_ui 13.8.0.pre.alpha.PLAY1016reactionbuttonemojibug1245 → 13.8.0.pre.alpha.play845allkitsbytypes1254

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Playbook
3
+ module PlaybookWebsite
4
4
  module PbDocHelper
5
5
  def pb_kit_title(title)
6
6
  title.remove("pb_").titleize.tr("_", " ")
@@ -26,41 +26,81 @@ module Playbook
26
26
  end
27
27
 
28
28
  # Deal with lists of kits, used in Playbook doc and Externally
29
- # rubocop:disable Style/StringConcatenation
30
- def pb_kits(type: "rails", limit_examples: false, dark_mode: false, method: get_kits)
31
- display_kits = []
32
- kits = method
33
- kits.each do |kit|
34
- if kit.is_a?(Hash)
35
- nav_hash_array(kit).each do |sub_kit|
36
- display_kits << render_pb_doc_kit(sub_kit, type, limit_examples, false, dark_mode)
37
- end
38
- else
39
- display_kits << render_pb_doc_kit(kit, type, limit_examples, false, dark_mode)
40
- end
41
- end
42
- raw("<div class='pb--docItem'>" + display_kits.join("</div><div class='pb--docItem'>") + "</div>")
29
+ def pb_kits(type: "rails", limit_examples: false, dark_mode: false)
30
+ kits = get_kits(type)
31
+
32
+ # Iterate through the filtered kits and render them
33
+ kits.map do |kit|
34
+ render_pb_doc_kit(kit["name"], type, limit_examples, true, dark_mode)
35
+ end.join.html_safe
43
36
  end
44
- # rubocop:enable Style/StringConcatenation
45
37
 
46
- # rubocop:disable Naming/AccessorMethodName
47
- def get_kits
48
- menu = YAML.load_file(Playbook::Engine.root.join("dist/menu.yml"))
49
- menu["kits"]
38
+ def get_kits(type = "rails")
39
+ kits = YAML.load_file(Playbook::Engine.root.join("dist/menu.yml")) || []
40
+
41
+ # Filter kits that have at least one component compatible with the type
42
+ kits.select do |kit|
43
+ kit["components"].any? { |component| component["platforms"].include?(type) }
44
+ end
50
45
  end
51
46
 
52
- def get_kits_pb_website
53
- menu = YAML.load_file(Rails.root.join("config/menu.yml"))
54
- menu["kits"]
47
+ def aggregate_kits
48
+ all_kits = []
49
+
50
+ YAML.load_file(Playbook::Engine.root.join("dist/menu.yml")).each do |kit|
51
+ kit_name = kit["name"]
52
+ components = kit["components"].map { |c| c["name"] }
53
+
54
+ all_kits << if components.size == 1
55
+ components.first
56
+ else
57
+ { kit_name => components }
58
+ end
59
+ end
60
+
61
+ all_kits
55
62
  end
56
- # rubocop:enable Naming/AccessorMethodName
57
63
 
58
64
  # rubocop:disable Style/OptionalBooleanParameter
59
- def render_pb_doc_kit(kit, type, limit_examples, code = true, dark_mode = false)
60
- title = pb_doc_render_clickable_title(kit, type)
61
- ui = raw("<div class='pb--docItem-ui'>
62
- #{pb_kit(kit: kit, type: type, show_code: code, limit_examples: limit_examples, dark_mode: dark_mode)}</div>")
63
- title + ui
65
+ def render_pb_doc_kit(kit_name, type, limit_examples, code = true, dark_mode = false)
66
+ parent_kit = YAML.load_file(Playbook::Engine.root.join("dist/menu.yml")).find { |kit| kit["name"] == kit_name }
67
+
68
+ # Initialize component_content as an empty string
69
+ component_content = ""
70
+ title = ""
71
+
72
+ # Check if parent_kit is nil
73
+ if parent_kit.nil?
74
+ title = pb_doc_render_clickable_title(kit_name, type)
75
+ component_content = raw("<div class='pb--docItem-ui'>
76
+ #{pb_kit(kit: kit_name, type: type, show_code: code, limit_examples: limit_examples, dark_mode: dark_mode)}</div>")
77
+ else
78
+ # Filter components based on the specified type
79
+ components = parent_kit["components"].select { |component| component["platforms"].include?(type) }
80
+
81
+ # If it's a parent with components, accumulate the UI content for child components
82
+ if components.any?
83
+ component_content = components.map do |component|
84
+ component_name = component["name"]
85
+ title = pb_doc_render_clickable_title(component_name, type) # Use component_name for the title
86
+
87
+ # Render the component UI content with the same styles/tags as the parent
88
+ component_ui = raw("<div class='pb--docItem-ui'>
89
+ #{pb_kit(kit: component_name, type: type, show_code: code, limit_examples: limit_examples, dark_mode: dark_mode)}
90
+ </div>")
91
+
92
+ # Combine the component name and component UI content
93
+ "#{title}#{component_ui}"
94
+ end.join.to_s
95
+ end
96
+ end
97
+
98
+ # Combine the component content and UI content for the parent kit
99
+ if parent_kit.nil?
100
+ "#{title}#{component_content}".to_s
101
+ else
102
+ component_content.to_s.to_s
103
+ end
64
104
  end
65
105
  # rubocop:enable Style/OptionalBooleanParameter
66
106
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Playbook
4
4
  PREVIOUS_VERSION = "13.8.0"
5
- VERSION = "13.8.0.pre.alpha.PLAY1016reactionbuttonemojibug1245"
5
+ VERSION = "13.8.0.pre.alpha.play845allkitsbytypes1254"
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: 13.8.0.pre.alpha.PLAY1016reactionbuttonemojibug1245
4
+ version: 13.8.0.pre.alpha.play845allkitsbytypes1254
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: 2023-10-02 00:00:00.000000000 Z
12
+ date: 2023-10-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack