playbook_ui 12.24.0 → 12.25.0.pre.alpha.PLAY733DetailKit761

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +1 -0
  3. data/app/pb_kits/playbook/index.js +1 -0
  4. data/app/pb_kits/playbook/pb_date/_date.tsx +96 -42
  5. data/app/pb_kits/playbook/pb_date/date.html.erb +22 -2
  6. data/app/pb_kits/playbook/pb_date/date.rb +2 -0
  7. data/app/pb_kits/playbook/pb_date/docs/_date_unstyled.html.erb +30 -0
  8. data/app/pb_kits/playbook/pb_date/docs/_date_unstyled.jsx +47 -0
  9. data/app/pb_kits/playbook/pb_date/docs/_date_unstyled.md +1 -0
  10. data/app/pb_kits/playbook/pb_date/docs/example.yml +4 -4
  11. data/app/pb_kits/playbook/pb_date/docs/index.js +1 -0
  12. data/app/pb_kits/playbook/pb_detail/_detail.scss +44 -0
  13. data/app/pb_kits/playbook/pb_detail/_detail.tsx +51 -0
  14. data/app/pb_kits/playbook/pb_detail/_detail_mixins.scss +29 -0
  15. data/app/pb_kits/playbook/pb_detail/detail.html.erb +7 -0
  16. data/app/pb_kits/playbook/pb_detail/detail.rb +23 -0
  17. data/app/pb_kits/playbook/pb_detail/detail.test.jsx +33 -0
  18. data/app/pb_kits/playbook/pb_detail/docs/_description.md +1 -0
  19. data/app/pb_kits/playbook/pb_detail/docs/_detail_bolded.html.erb +33 -0
  20. data/app/pb_kits/playbook/pb_detail/docs/_detail_bolded.jsx +47 -0
  21. data/app/pb_kits/playbook/pb_detail/docs/_detail_default.html.erb +28 -0
  22. data/app/pb_kits/playbook/pb_detail/docs/_detail_default.jsx +43 -0
  23. data/app/pb_kits/playbook/pb_detail/docs/_detail_default.md +6 -0
  24. data/app/pb_kits/playbook/pb_detail/docs/_detail_styled.html.erb +22 -0
  25. data/app/pb_kits/playbook/pb_detail/docs/_detail_styled.jsx +32 -0
  26. data/app/pb_kits/playbook/pb_detail/docs/example.yml +11 -0
  27. data/app/pb_kits/playbook/pb_detail/docs/index.js +3 -0
  28. data/app/pb_kits/playbook/pb_docs/kit_example.rb +0 -2
  29. data/app/pb_kits/playbook/pb_time/_time.tsx +71 -35
  30. data/app/pb_kits/playbook/pb_time/docs/_time_unstyled.html.erb +37 -0
  31. data/app/pb_kits/playbook/pb_time/docs/_time_unstyled.jsx +58 -0
  32. data/app/pb_kits/playbook/pb_time/docs/_time_unstyled.md +1 -0
  33. data/app/pb_kits/playbook/pb_time/docs/example.yml +2 -0
  34. data/app/pb_kits/playbook/pb_time/docs/index.js +1 -0
  35. data/app/pb_kits/playbook/pb_time/time.html.erb +26 -7
  36. data/app/pb_kits/playbook/pb_time/time.rb +2 -0
  37. data/app/pb_kits/playbook/pb_title/_title.scss +2 -1
  38. data/app/pb_kits/playbook/pb_title/_title.tsx +3 -2
  39. data/app/pb_kits/playbook/pb_title/title.rb +10 -3
  40. data/app/pb_kits/playbook/pb_title/title.test.js +3 -3
  41. data/app/pb_kits/playbook/playbook-doc.js +2 -0
  42. data/dist/menu.yml +1 -0
  43. data/dist/playbook-rails.js +51 -0
  44. data/lib/playbook/version.rb +2 -2
  45. data/lib/playbook.rb +1 -2
  46. metadata +34 -41
  47. data/app/pb_kits/playbook/pb_docs/kit_api.html.erb +0 -311
  48. data/app/pb_kits/playbook/pb_docs/kit_api.rb +0 -149
  49. data/lib/playbook/markdown/helper.rb +0 -132
  50. data/lib/playbook/markdown.rb +0 -3
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- PREVIOUS_VERSION = "12.23.0"
5
- VERSION = "12.24.0"
4
+ PREVIOUS_VERSION = "12.25.0"
5
+ VERSION = "12.25.0.pre.alpha.PLAY733DetailKit761"
6
6
  end
data/lib/playbook.rb CHANGED
@@ -8,10 +8,9 @@ require "playbook/props"
8
8
  require "playbook/forms"
9
9
  require "playbook/pb_forms_helper"
10
10
  require "playbook/pb_kit_helper"
11
- require "playbook/pb_doc_helper"
11
+ require "playbook/pb_doc_helper" # Duplicated from website (Temp)
12
12
  require "playbook/kit_base"
13
13
  require "playbook/kit_resolver"
14
- require "playbook/markdown"
15
14
 
16
15
  module Playbook
17
16
  ROOT_PATH = Pathname.new(File.join(__dir__, ".."))
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.24.0
4
+ version: 12.25.0.pre.alpha.PLAY733DetailKit761
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
8
8
  - Power Devs
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-05-26 00:00:00.000000000 Z
12
+ date: 2023-06-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -67,34 +67,6 @@ dependencies:
67
67
  - - '='
68
68
  - !ruby/object:Gem::Version
69
69
  version: 2.6.1
70
- - !ruby/object:Gem::Dependency
71
- name: redcarpet
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '3.6'
77
- type: :runtime
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '3.6'
84
- - !ruby/object:Gem::Dependency
85
- name: rouge
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - "~>"
89
- - !ruby/object:Gem::Version
90
- version: '3.15'
91
- type: :runtime
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: '3.15'
98
70
  - !ruby/object:Gem::Dependency
99
71
  name: view_component
100
72
  requirement: !ruby/object:Gem::Requirement
@@ -283,7 +255,9 @@ dependencies:
283
255
  - - '='
284
256
  - !ruby/object:Gem::Version
285
257
  version: 3.3.1
286
- description: Playbook Design System. Built for Nitro, but powering all.
258
+ description: Playbook UI is built out in Ruby View Components and React Components.
259
+ Playbook takes a modern design approach and applies it in a way that makes it easy
260
+ to support bleeding edge or legacy systems.
287
261
  email:
288
262
  - nitroux@powerhrg.com
289
263
  - dev@powerhrg.com
@@ -690,6 +664,9 @@ files:
690
664
  - app/pb_kits/playbook/pb_date/docs/_date_default.jsx
691
665
  - app/pb_kits/playbook/pb_date/docs/_date_timezone.html.erb
692
666
  - app/pb_kits/playbook/pb_date/docs/_date_timezone.md
667
+ - app/pb_kits/playbook/pb_date/docs/_date_unstyled.html.erb
668
+ - app/pb_kits/playbook/pb_date/docs/_date_unstyled.jsx
669
+ - app/pb_kits/playbook/pb_date/docs/_date_unstyled.md
693
670
  - app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb
694
671
  - app/pb_kits/playbook/pb_date/docs/_date_variants.jsx
695
672
  - app/pb_kits/playbook/pb_date/docs/_description.md
@@ -846,6 +823,22 @@ files:
846
823
  - app/pb_kits/playbook/pb_date_year_stacked/docs/_footer.md
847
824
  - app/pb_kits/playbook/pb_date_year_stacked/docs/example.yml
848
825
  - app/pb_kits/playbook/pb_date_year_stacked/docs/index.js
826
+ - app/pb_kits/playbook/pb_detail/_detail.scss
827
+ - app/pb_kits/playbook/pb_detail/_detail.tsx
828
+ - app/pb_kits/playbook/pb_detail/_detail_mixins.scss
829
+ - app/pb_kits/playbook/pb_detail/detail.html.erb
830
+ - app/pb_kits/playbook/pb_detail/detail.rb
831
+ - app/pb_kits/playbook/pb_detail/detail.test.jsx
832
+ - app/pb_kits/playbook/pb_detail/docs/_description.md
833
+ - app/pb_kits/playbook/pb_detail/docs/_detail_bolded.html.erb
834
+ - app/pb_kits/playbook/pb_detail/docs/_detail_bolded.jsx
835
+ - app/pb_kits/playbook/pb_detail/docs/_detail_default.html.erb
836
+ - app/pb_kits/playbook/pb_detail/docs/_detail_default.jsx
837
+ - app/pb_kits/playbook/pb_detail/docs/_detail_default.md
838
+ - app/pb_kits/playbook/pb_detail/docs/_detail_styled.html.erb
839
+ - app/pb_kits/playbook/pb_detail/docs/_detail_styled.jsx
840
+ - app/pb_kits/playbook/pb_detail/docs/example.yml
841
+ - app/pb_kits/playbook/pb_detail/docs/index.js
849
842
  - app/pb_kits/playbook/pb_dialog/_close_icon.tsx
850
843
  - app/pb_kits/playbook/pb_dialog/_dialog.scss
851
844
  - app/pb_kits/playbook/pb_dialog/_dialog.tsx
@@ -905,8 +898,6 @@ files:
905
898
  - app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_default.jsx
906
899
  - app/pb_kits/playbook/pb_distribution_bar/docs/example.yml
907
900
  - app/pb_kits/playbook/pb_distribution_bar/docs/index.js
908
- - app/pb_kits/playbook/pb_docs/kit_api.html.erb
909
- - app/pb_kits/playbook/pb_docs/kit_api.rb
910
901
  - app/pb_kits/playbook/pb_docs/kit_example.html.erb
911
902
  - app/pb_kits/playbook/pb_docs/kit_example.rb
912
903
  - app/pb_kits/playbook/pb_enhanced_element/element_observer.ts
@@ -2084,6 +2075,9 @@ files:
2084
2075
  - app/pb_kits/playbook/pb_time/docs/_time_timezone.html.erb
2085
2076
  - app/pb_kits/playbook/pb_time/docs/_time_timezone.jsx
2086
2077
  - app/pb_kits/playbook/pb_time/docs/_time_timezone.md
2078
+ - app/pb_kits/playbook/pb_time/docs/_time_unstyled.html.erb
2079
+ - app/pb_kits/playbook/pb_time/docs/_time_unstyled.jsx
2080
+ - app/pb_kits/playbook/pb_time/docs/_time_unstyled.md
2087
2081
  - app/pb_kits/playbook/pb_time/docs/example.yml
2088
2082
  - app/pb_kits/playbook/pb_time/docs/index.js
2089
2083
  - app/pb_kits/playbook/pb_time/time.html.erb
@@ -2431,6 +2425,7 @@ files:
2431
2425
  - app/pb_kits/playbook/utilities/test/globalProps/order.test.js
2432
2426
  - app/pb_kits/playbook/utilities/text.ts
2433
2427
  - dist/menu.yml
2428
+ - dist/playbook-rails.js
2434
2429
  - dist/reset.css
2435
2430
  - lib/playbook.rb
2436
2431
  - lib/playbook/align_content.rb
@@ -2459,8 +2454,6 @@ files:
2459
2454
  - lib/playbook/kit_base.rb
2460
2455
  - lib/playbook/kit_resolver.rb
2461
2456
  - lib/playbook/line_height.rb
2462
- - lib/playbook/markdown.rb
2463
- - lib/playbook/markdown/helper.rb
2464
2457
  - lib/playbook/number_spacing.rb
2465
2458
  - lib/playbook/order.rb
2466
2459
  - lib/playbook/pagination_renderer.rb
@@ -2488,11 +2481,11 @@ files:
2488
2481
  - lib/playbook/version.rb
2489
2482
  - lib/playbook/z_index.rb
2490
2483
  - lib/playbook_ui.rb
2491
- homepage: http://playbook.powerapp.cloud
2484
+ homepage: https://playbook.powerapp.cloud/
2492
2485
  licenses:
2493
2486
  - ISC
2494
2487
  metadata: {}
2495
- post_install_message:
2488
+ post_install_message:
2496
2489
  rdoc_options: []
2497
2490
  require_paths:
2498
2491
  - lib
@@ -2503,12 +2496,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
2503
2496
  version: '0'
2504
2497
  required_rubygems_version: !ruby/object:Gem::Requirement
2505
2498
  requirements:
2506
- - - ">="
2499
+ - - ">"
2507
2500
  - !ruby/object:Gem::Version
2508
- version: '0'
2501
+ version: 1.3.1
2509
2502
  requirements: []
2510
2503
  rubygems_version: 3.3.7
2511
- signing_key:
2504
+ signing_key:
2512
2505
  specification_version: 4
2513
2506
  summary: Playbook Design System
2514
2507
  test_files: []
@@ -1,311 +0,0 @@
1
- <% if !local_prop_data.present? %>
2
- <div data-action="toggle" data-togglable="prop_example" class="pb--propsTable">
3
- <%= pb_rails("title", props: { text: "Available Props", size: 3, margin_bottom: "sm" }) %>
4
- <%= pb_rails("card", props: { padding: "none" }) do %>
5
- <%= pb_rails("card/card_body", props: { padding: "sm" }) do %>
6
- <%= pb_rails("nav", props: { orientation: "horizontal", variant: "subtle" }) do %>
7
- <%= pb_rails("nav/item", props: { text: "Global Props", link: "#", active: true }) %>
8
- <% end %>
9
- <% end %>
10
- <%= pb_rails("section_separator") %>
11
- <%= pb_rails("card/card_body", props: {}) do %>
12
- <%= pb_rails("table", props: {container: false, disable_hover: true }) do %>
13
- <thead>
14
- <tr>
15
- <th>Props</th>
16
- <th>Type</th>
17
- <th>Values</th>
18
- </tr>
19
- </thead>
20
- <tbody>
21
- <% global_prop_data.each do |key, value|%>
22
- <tr>
23
- <td>
24
- <%= pb_rails("title", props: { text: key, tag: "h4", size: 4 }) %>
25
- </td>
26
- <td>
27
- <%= pb_rails("card", props: {
28
- classname: "card",
29
- padding: "xxs",
30
- background: "light",
31
- border_none: true,
32
- border_radius: "sm"
33
- }) do %>
34
- <%= pb_rails("body", props: {
35
- classname: "kearning"
36
- }) do %>
37
- <% if key =~ /^padding|^margin/ %>
38
- <%= "array" %>
39
- <% else %>
40
- <%= value[:type].to_s.downcase %>
41
- <% end %>
42
- <% end %>
43
- <% end %>
44
- </td>
45
- <td>
46
- <% if key =~ /^padding|^margin/ %>
47
- <% padding_margin_values.each do |item| %>
48
- <%= pb_rails("card", props: {
49
- flex_direction: "row",
50
- classname: "card",
51
- padding: "xxs",
52
- background: "light",
53
- border_none: true,
54
- border_radius: "sm",
55
- margin: "xxs"
56
- }) do %>
57
- <%= pb_rails("body", props: {
58
- classname: "kearning"
59
- }) do %>
60
- <%= item %>
61
- <% end %>
62
- <% end %>
63
- <% end %>
64
- <% else %>
65
- <% if value[:values].present? %>
66
- <% value[:values].each do |item| %>
67
- <% if item != nil %>
68
- <%= pb_rails("card", props: {
69
- flex_direction: "row",
70
- classname: "card",
71
- padding: "xxs",
72
- background: "light",
73
- border_none: true,
74
- border_radius: "sm",
75
- margin: "xxs"
76
- }) do %>
77
- <%= pb_rails("body", props: {
78
- classname: "kearning"
79
- }) do %>
80
- <%= item %>
81
- <% end %>
82
- <% end %>
83
- <% end %>
84
- <% end %>
85
- <% end %>
86
- <% end %>
87
- </td>
88
- </tr>
89
- <% end %>
90
- </tbody>
91
- <% end %>
92
- <% end %>
93
- <% end %>
94
- </div>
95
- <% else %>
96
- <div data-action="toggle" data-togglable="prop_example" class="pb--propsTable">
97
- <%= pb_rails("title", props: { text: "Available Props", size: 3, margin_bottom: "sm" }) %>
98
- <%= pb_rails("card", props: { padding: "none" }) do %>
99
- <%= pb_rails("card/card_body", props: { padding: "sm" }) do %>
100
- <%= pb_rails("nav", props: { orientation: "horizontal", variant: "subtle" }) do %>
101
- <% if local_prop_data.present? %>
102
- <%= pb_rails("nav/item", props: { text: "Kit Props", link: "#", active: true, id: "local-button-active", classname: "local-active" }) %>
103
- <% end %>
104
- <% if local_prop_data.present? %>
105
- <%= pb_rails("nav/item", props: { text: "Kit Props", link: "#", id: "local-button", classname: "global-active" }) %>
106
- <% end %>
107
- <%= pb_rails("nav/item", props: { text: "Global Props", link: "#", active: true, id: "global-button-active", classname: "global-active" }) %>
108
- <%= pb_rails("nav/item", props: { text: "Global Props", link: "#", id: "global-button", classname: "local-active" }) %>
109
- <% end %>
110
- <% end %>
111
- <%= pb_rails("section_separator") %>
112
- <%= pb_rails("card/card_body", props: {}) do %>
113
- <%= pb_rails("table", props: {container: false, disable_hover: true, id: "global-prop-table", classname: "global-active"}) do %>
114
- <thead>
115
- <tr>
116
- <th>Props</th>
117
- <th>Type</th>
118
- <th>Values</th>
119
- </tr>
120
- </thead>
121
- <tbody>
122
- <% global_prop_data.each do |key, value|%>
123
- <tr>
124
- <td>
125
- <%= pb_rails("title", props: { text: key, tag: "h4", size: 4 }) %>
126
- </td>
127
- <td>
128
- <%= pb_rails("card", props: {
129
- classname: "card",
130
- padding: "xxs",
131
- background: "light",
132
- border_none: true,
133
- border_radius: "sm"
134
- }) do %>
135
- <%= pb_rails("body", props: {
136
- classname: "kearning"
137
- }) do %>
138
- <% if key =~ /^padding|^margin/ %>
139
- <%= "array" %>
140
- <% else %>
141
- <%= value[:type].to_s.downcase %>
142
- <% end %>
143
- <% end %>
144
- <% end %>
145
- </td>
146
- <td>
147
- <% if key =~ /^padding|^margin/ %>
148
- <% padding_margin_values.each do |item| %>
149
- <%= pb_rails("card", props: {
150
- flex_direction: "row",
151
- classname: "card",
152
- padding: "xxs",
153
- background: "light",
154
- border_none: true,
155
- border_radius: "sm",
156
- margin: "xxs"
157
- }) do %>
158
- <%= pb_rails("body", props: {
159
- classname: "kearning"
160
- }) do %>
161
- <%= item %>
162
- <% end %>
163
- <% end %>
164
- <% end %>
165
- <% else %>
166
- <% if value[:values].present? %>
167
- <% value[:values].each do |item| %>
168
- <% if item != nil %>
169
- <%= pb_rails("card", props: {
170
- flex_direction: "row",
171
- classname: "card",
172
- padding: "xxs",
173
- background: "light",
174
- border_none: true,
175
- border_radius: "sm",
176
- margin: "xxs"
177
- }) do %>
178
- <%= pb_rails("body", props: {
179
- classname: "kearning"
180
- }) do %>
181
- <%= item %>
182
- <% end %>
183
- <% end %>
184
- <% end %>
185
- <% end %>
186
- <% end %>
187
- <% end %>
188
- </td>
189
- </tr>
190
- <% end %>
191
- </tbody>
192
- <% end %>
193
- <%= pb_rails("table", props: {container: false, disable_hover: true, id: "local-prop-table", classname: "local-active"}) do %>
194
- <thead>
195
- <tr>
196
- <th>Props</th>
197
- <th>Type</th>
198
- <th>Values</th>
199
- <th>Default</th>
200
- </tr>
201
- </thead>
202
- <tbody>
203
- <% local_prop_data.each do |key, value|%>
204
- <tr>
205
- <td>
206
- <%= pb_rails("title", props: { text: key, tag: "h4", size: 4 }) %>
207
- </td>
208
- <td>
209
- <%= pb_rails("card", props: {
210
- classname: "card",
211
- padding: "xxs",
212
- background: "light",
213
- border_none: true,
214
- border_radius: "sm"
215
- }) do %>
216
- <%= pb_rails("body", props: {
217
- classname: "kearning"
218
- }) do %>
219
- <%= value[:type].downcase %>
220
- <% end %>
221
- <% end %>
222
- </td>
223
- <td>
224
- <% if value[:values].present? %>
225
- <% value[:values].each do |item| %>
226
- <% if item != nil %>
227
- <%= pb_rails("card", props: {
228
- flex_direction: "row",
229
- classname: "card",
230
- padding: "xxs",
231
- background: "light",
232
- border_none: true,
233
- border_radius: "sm",
234
- margin: "xxs"
235
- }) do %>
236
- <%= pb_rails("body", props: {
237
- classname: "kearning"
238
- }) do %>
239
- <%= item %>
240
- <% end %>
241
- <% end %>
242
- <% end %>
243
- <% end %>
244
- <% end %>
245
- </td>
246
- <td>
247
- <% if value[:default].present? || value[:default].is_a?(TrueClass) || value[:default].is_a?(FalseClass) %>
248
- <%= pb_rails("card", props: {
249
- classname: "card",
250
- padding: "xxs",
251
- background: "light",
252
- border_none: true,
253
- border_radius: "sm"
254
- }) do %>
255
- <%= pb_rails("body", props: {
256
- classname: "kearning"
257
- }) do %>
258
- <%= value[:default] %>
259
- <% end %>
260
- <% end %>
261
- <% end %>
262
- </td>
263
- </tr>
264
- <% end %>
265
- </tbody>
266
- <% end %>
267
- <% end %>
268
- <% end %>
269
- </div>
270
- <% end %>
271
-
272
- <script>
273
-
274
- const globalNavAndTable = document.querySelectorAll('.global-active');
275
- const localNavAndTable = document.querySelectorAll('.local-active');
276
-
277
- globalNavAndTable.forEach(element => {
278
- element.style.display = 'none';
279
- });
280
-
281
- const globalButton = document.getElementById("global-button");
282
- if (globalButton) {
283
- globalButton.addEventListener("click", showGlobal);
284
- }
285
-
286
- const localButton = document.getElementById("local-button");
287
- if (localButton) {
288
- localButton.addEventListener("click", showLocal);
289
- }
290
-
291
- function showGlobal() {
292
- localNavAndTable.forEach(element => {
293
- element.style.display = 'none';
294
- });
295
-
296
- globalNavAndTable.forEach(element => {
297
- element.style.display = 'table';
298
- });
299
- }
300
-
301
- function showLocal() {
302
- localNavAndTable.forEach(element => {
303
- element.style.display = 'table';
304
- });
305
-
306
- globalNavAndTable.forEach(element => {
307
- element.style.display = 'none';
308
- });
309
- }
310
-
311
- </script>
@@ -1,149 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Playbook
4
- module PbDocs
5
- class KitApi < Playbook::KitBase
6
- prop :kit, type: Playbook::Props::String, required: true
7
-
8
- def kit_local_props
9
- local = []
10
- kit_props.each do |key, value|
11
- value.kit != Playbook::KitBase && local.push({ key: key, value: value })
12
- end
13
- local
14
- end
15
-
16
- def padding_margin_values
17
- %w[none xxs xs sm md lg xl]
18
- end
19
-
20
- def local_prop_data
21
- local_props = {}
22
-
23
- kit_local_props.each do |key, _value|
24
- name = key[:value].instance_variable_get(:@name)
25
- type = key[:value].class.to_s.split("::").last
26
- default = key[:value].instance_variable_get(:@default)
27
- values = key[:value].instance_variable_get(:@values)
28
- local_props[name.to_sym] = { "type": type, "default": default, "values": values }
29
- end
30
- local_props
31
- end
32
-
33
- def kit_global_props
34
- global_props = {}
35
- global_prop_names = []
36
- global_prop_values = {}
37
- global_props_with_values = {}
38
- global_props_without_values = []
39
- parent_child_object = {}
40
- updated_global_props_with_values = {}
41
-
42
- # extracts the modules from kit_base.rb, which is where we import all the global props that we inject into every rails kit
43
- pb_module = Playbook::KitBase.included_modules.select { |mod| mod.to_s.include?("Playbook::") }
44
-
45
- # loops through the kits and extracts each prop with its values and pushes that to the global_props hash
46
- kit_props.each do |key, value|
47
- value.kit == Playbook::KitBase && global_props[key.to_sym] = value
48
- end
49
-
50
- # loops through the global_props and extracts the name of each prop and pushes that to global_prop_names array
51
- global_props.each do |name, _values|
52
- global_prop_names.push(name)
53
- end
54
-
55
- # Loops through each module in pb_module and searches for methods that end in _values, as these methods hold the values for each prop
56
- # we then save the values and type and push that to the values hash as a key value pair
57
- pb_module.each do |mod|
58
- mod.instance_methods.each do |method_name|
59
- next unless method_name.to_s.end_with?("_values")
60
-
61
- value = send(method_name)
62
- type = value.class
63
- global_prop_values[method_name.to_s.chomp("_values").to_sym] = { "type": type, "values": value }
64
- end
65
- end
66
-
67
- # loops through the global_prop_names array
68
- # then loops through the global_prop_values hash and extracts the values that have the same name found in global_prop_names
69
- # this loop helps ensure only global props values are actually extracted, as there could be other methods that end in _values in the modules we are iterating over
70
- # these verified global props with values are then pushed to the global_props_with_values hash
71
- global_prop_names.each do |name, _prop|
72
- global_prop_values.each do |key, value|
73
- global_props_with_values[key] = value if key == name
74
- end
75
- end
76
-
77
- # now we grab all the global_prop_names that do not have a matching key in global_prop_values.
78
- # This gives us any global prop that did not have any predefined value. like classname and dark
79
- global_props_without_values = global_prop_names - global_prop_values.keys
80
-
81
- # Loops through each module in pb_module and searches for methods that end in _options, as these methods hold all the props in the module
82
- # save the prop names prop values and and parent module name to parent_child_object hash
83
- # this is a comprehensive list of all parent module and children props for edge cases like spacing.rb, that is not named after the props it represents
84
- pb_module.each do |mod|
85
- mod.instance_methods.each do |method_name|
86
- next unless method_name.to_s.end_with?("_options")
87
-
88
- props = send(method_name)
89
- parent = mod.to_s.split("::").last
90
- values = send("#{parent.underscore}_values")
91
- parent_child_object[parent] = { "props": props, "values": values }
92
- end
93
- end
94
-
95
- # loops through each object in parent_child_object and extracts its children (props and values)
96
- # loops through each child and extracts the individual props
97
- # Checks if the props match any of the props in global_props_without_values
98
- # if it does, then we push that prop to global_props_with_values hash
99
- # This extracts the props in the spacing.rb file and any file that is not named after the props it represents
100
- parent_child_object.each do |_parent, children|
101
- children.each do |_child, props|
102
- props.each do |prop, _value|
103
- type = children[:values].class
104
- values = children[:values]
105
- global_props_with_values[prop] = { "type": type, "values": values } if global_props_without_values.include?(prop)
106
- end
107
- end
108
- end
109
-
110
- # loop through the global_props hash and the global_props_with_values hash.
111
- # extract the props from global_props that are not found in global_props_with_values into updated_global_props_with_values
112
- # This is the last piece that grabs the global props that did not have values at all, like classname and dark, and adds it to our hash
113
- global_props.each do |prop, value|
114
- unless global_props_with_values.include?(prop)
115
- type = value.class.to_s.split("::").last
116
- updated_global_props_with_values[prop] = { "type": type }
117
- end
118
- end
119
-
120
- # Merge updated_global_props_with_values into global_props_with_values
121
- # global_props_with_values will now hold all the global props thier values and type
122
- global_props_with_values.merge!(updated_global_props_with_values)
123
-
124
- global_props_with_values
125
- end
126
-
127
- def global_prop_data
128
- global_props = {}
129
-
130
- kit_global_props.each do |key, value|
131
- type = value[:type]
132
- values = value[:values]
133
- global_props[key] = { "type": type, "values": values }
134
- end
135
- global_props
136
- end
137
-
138
- def kit_props
139
- kit_class.props
140
- end
141
-
142
- private
143
-
144
- def kit_class
145
- @kit_class ||= Playbook::KitResolver.resolve(kit.to_s)
146
- end
147
- end
148
- end
149
- end