glib-web 0.4.20 → 0.4.21

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 (118) hide show
  1. checksums.yaml +5 -5
  2. data/app/controllers/concerns/glib/auth/policy.rb +0 -0
  3. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +0 -0
  4. data/app/controllers/concerns/glib/json/traversal.rb +0 -0
  5. data/app/controllers/concerns/glib/json/ui.rb +3 -1
  6. data/app/controllers/glib/home_controller.rb +0 -0
  7. data/app/helpers/glib/dynamic_images_helper.rb +0 -0
  8. data/app/helpers/glib/dynamic_texts_helper.rb +0 -0
  9. data/app/helpers/glib/json_ui/abstract_builder.rb +71 -68
  10. data/app/helpers/glib/json_ui/action_builder.rb +0 -0
  11. data/app/helpers/glib/json_ui/list_builders.rb +3 -2
  12. data/app/helpers/glib/json_ui/menu_builder.rb +0 -0
  13. data/app/helpers/glib/json_ui/page_helper.rb +0 -0
  14. data/app/helpers/glib/json_ui/response_helper.rb +0 -0
  15. data/app/helpers/glib/json_ui/split_builders.rb +0 -0
  16. data/app/helpers/glib/json_ui/styling_helper.rb +0 -0
  17. data/app/helpers/glib/json_ui/table_builders.rb +0 -0
  18. data/app/helpers/glib/json_ui/view_builder.rb +0 -0
  19. data/app/helpers/glib/json_ui/view_builder/banners.rb +0 -0
  20. data/app/helpers/glib/json_ui/view_builder/fields.rb +14 -0
  21. data/app/helpers/glib/json_ui/view_builder/panels.rb +8 -8
  22. data/app/models/glib/active_storage/attachment.rb +0 -0
  23. data/app/models/glib/active_storage/blob.rb +0 -0
  24. data/app/models/glib/dynamic_text_record.rb +0 -0
  25. data/app/models/glib/text.rb +0 -0
  26. data/app/policies/glib/application_policy.rb +148 -148
  27. data/app/views/app/views/json_ui/vue/renderer.html.erb +4 -0
  28. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +0 -0
  29. data/app/views/json_ui/garage/actions/index.json.jbuilder +0 -0
  30. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +0 -0
  31. data/app/views/json_ui/garage/forms/basic.json.jbuilder +0 -0
  32. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +0 -0
  33. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +0 -0
  34. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +33 -0
  35. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +0 -0
  36. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +0 -0
  37. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +2 -1
  38. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +0 -0
  39. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +0 -0
  40. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +0 -0
  41. data/app/views/json_ui/garage/forms/index.json.jbuilder +7 -4
  42. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +0 -0
  43. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +0 -0
  44. data/app/views/json_ui/garage/forms/selects.json.jbuilder +0 -0
  45. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +0 -0
  46. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +0 -0
  47. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +0 -0
  48. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +0 -0
  49. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +5 -1
  50. data/app/views/json_ui/garage/home/blank.json.jbuilder +0 -0
  51. data/app/views/json_ui/garage/home/index.json.jbuilder +0 -0
  52. data/app/views/json_ui/garage/lists/_infinite_scroll_section.json.jbuilder +0 -0
  53. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +0 -0
  54. data/app/views/json_ui/garage/lists/fab.json.jbuilder +0 -0
  55. data/app/views/json_ui/garage/lists/index.json.jbuilder +0 -0
  56. data/app/views/json_ui/garage/lists/infinite_scroll.json.jbuilder +0 -0
  57. data/app/views/json_ui/garage/lists/templating.json.jbuilder +9 -1
  58. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +6 -6
  59. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +7 -7
  60. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +0 -0
  61. data/app/views/json_ui/garage/pages/index.json.jbuilder +0 -0
  62. data/app/views/json_ui/garage/pages/layout.json.jbuilder +0 -0
  63. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +0 -0
  64. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +0 -0
  65. data/app/views/json_ui/garage/panels/card.json.jbuilder +11 -34
  66. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +0 -0
  67. data/app/views/json_ui/garage/panels/custom.json.jbuilder +0 -0
  68. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +0 -0
  69. data/app/views/json_ui/garage/panels/index.json.jbuilder +21 -7
  70. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +0 -0
  71. data/app/views/json_ui/garage/panels/split.json.jbuilder +0 -0
  72. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +0 -0
  73. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +0 -0
  74. data/app/views/json_ui/garage/services/image.json.jbuilder +0 -0
  75. data/app/views/json_ui/garage/services/index.json.jbuilder +0 -0
  76. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +0 -0
  77. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +0 -0
  78. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +0 -0
  79. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +0 -0
  80. data/app/views/json_ui/garage/tables/index.json.jbuilder +0 -0
  81. data/app/views/json_ui/garage/views/banners.json.jbuilder +0 -0
  82. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +0 -0
  83. data/app/views/json_ui/garage/views/carousels.json.jbuilder +0 -0
  84. data/app/views/json_ui/garage/views/charts.json.jbuilder +0 -0
  85. data/app/views/json_ui/garage/views/images.json.jbuilder +0 -0
  86. data/app/views/json_ui/garage/views/index.json.jbuilder +0 -0
  87. data/app/views/json_ui/garage/views/links.json.jbuilder +0 -0
  88. data/app/views/json_ui/garage/views/map_data.json.jbuilder +0 -0
  89. data/app/views/json_ui/garage/views/misc.json.jbuilder +0 -0
  90. data/app/views/json_ui/garage/views/texts.json.jbuilder +0 -0
  91. data/app/views/layouts/json_ui/renderer.html.erb +32 -0
  92. data/config/routes.rb +0 -0
  93. data/lib/generators/glib/install_generator.rb +0 -0
  94. data/lib/generators/templates/20191017062519_create_texts.rb +0 -0
  95. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +0 -0
  96. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +0 -0
  97. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +0 -0
  98. data/lib/generators/templates/database.yml +0 -0
  99. data/lib/generators/templates/dynamic_text.rb +0 -0
  100. data/lib/glib-web.rb +0 -0
  101. data/lib/glib/dynamic_text.rb +0 -0
  102. data/lib/glib/dynamic_text/config.rb +0 -0
  103. data/lib/glib/engine.rb +0 -0
  104. data/lib/glib/json_crawler.rb +0 -0
  105. data/lib/glib/json_crawler/action_crawler.rb +0 -0
  106. data/lib/glib/json_crawler/action_crawlers/action_http.rb +0 -0
  107. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +0 -0
  108. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +0 -0
  109. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +0 -0
  110. data/lib/glib/json_crawler/http.rb +0 -0
  111. data/lib/glib/json_crawler/router.rb +0 -0
  112. data/lib/glib/value.rb +0 -0
  113. data/lib/glib/version.rb +0 -0
  114. metadata +4 -6
  115. data/app/controllers/concerns/application/json/libs.rb +0 -94
  116. data/app/controllers/concerns/application/json/transformation.rb +0 -11
  117. data/app/controllers/concerns/application/json/ui.rb +0 -66
  118. data/app/controllers/concerns/application/json/validation.rb +0 -13
@@ -1,3 +1,4 @@
1
+ <!-- Deprecated. Use layouts instead
1
2
  <!DOCTYPE html>
2
3
  <html>
3
4
 
@@ -26,6 +27,9 @@
26
27
  <script>
27
28
  var __page = <%= raw @__json_ui_orig_page%>;
28
29
  </script>
30
+
31
+ <% locals[:footer_block]&.call %>
29
32
  </body>
30
33
 
31
34
  </html>
35
+ -->
File without changes
File without changes
File without changes
@@ -0,0 +1,33 @@
1
+ json.title 'Forms'
2
+
3
+ json_ui_page json do |page|
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
7
+ form.h2 text: 'Dynamic Group'
8
+ form.spacer height: 6
9
+
10
+ value = [
11
+ {
12
+ 'question': 'Punctuality',
13
+ 'type': 'rating'
14
+ },
15
+ {
16
+ 'question': 'Quality of work',
17
+ 'type': 'rating'
18
+ },
19
+ {
20
+ 'question': 'Satisfied?',
21
+ 'type': 'yes_no'
22
+ }
23
+ ]
24
+ form.fields_dynamicGroup width: 'matchParent', name: 'user[evaluation]', value: value, groupTitlePrefix: 'Entry', groupTemplateViews: ->(group) do
25
+ group.spacer height: 10
26
+ group.fields_text width: 'matchParent', name: 'question', label: 'Question'
27
+ group.fields_text width: 'matchParent', name: 'type', label: 'Answer type'
28
+ end
29
+
30
+ form.spacer height: 20
31
+ form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
32
+ end
33
+ end
@@ -21,7 +21,8 @@ json_ui_page json do |page|
21
21
  form.fields_file name: 'user[photo][]', width: 'matchParent', label: 'Photo', accepts: rules2, directUploadUrl: rails_direct_uploads_url,
22
22
  placeholderView: { type: 'avatar', width: 100, height: 100 }
23
23
 
24
- form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
24
+ form.fields_submit text: 'Submit'
25
+ # form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
25
26
  end)
26
27
  end
27
28
 
@@ -2,7 +2,7 @@ json.title 'Forms'
2
2
 
3
3
  json_ui_page json do |page|
4
4
  render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
5
-
5
+
6
6
  page.list sections: [
7
7
  ->(section) do
8
8
  section.header padding: glib_json_padding_list, childViews: ->(header) do
@@ -25,7 +25,7 @@ json_ui_page json do |page|
25
25
  template.thumbnail title: 'GET Request', onClick: ->(action) do
26
26
  action.windows_open url: json_ui_garage_url(path: 'forms/get_request')
27
27
  end
28
-
28
+
29
29
  end
30
30
  end, ->(section) do
31
31
  section.header padding: glib_json_padding_list, childViews: ->(header) do
@@ -56,7 +56,7 @@ json_ui_page json do |page|
56
56
  template.thumbnail title: 'Rich Text Editor', onClick: ->(action) do
57
57
  action.windows_open url: json_ui_garage_url(path: 'forms/rich_text')
58
58
  end
59
-
59
+
60
60
  end
61
61
  end, ->(section) do
62
62
  section.header padding: glib_json_padding_list, childViews: ->(header) do
@@ -64,13 +64,16 @@ json_ui_page json do |page|
64
64
  end
65
65
 
66
66
  section.rows builder: ->(template) do
67
+ template.thumbnail title: 'Dynamic Group', onClick: ->(action) do
68
+ action.windows_open url: json_ui_garage_url(path: 'forms/dynamic_group')
69
+ end
67
70
  template.thumbnail title: 'Dynamic Select', onClick: ->(action) do
68
71
  action.windows_open url: json_ui_garage_url(path: 'forms/dynamic_select')
69
72
  end
70
73
  template.thumbnail title: 'Checkboxes', onClick: ->(action) do
71
74
  action.windows_open url: json_ui_garage_url(path: 'forms/checkboxes')
72
75
  end
73
-
76
+
74
77
  end
75
78
  end
76
79
  ]
File without changes
File without changes
@@ -10,6 +10,10 @@ json_ui_page json do |page|
10
10
  form.fields_password name: 'user[password]', width: 'matchParent', label: 'Password'
11
11
  form.fields_textarea name: 'user[textarea]', width: 'matchParent', label: 'Textarea with maxLength', maxLength: 50
12
12
 
13
- form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
13
+ form.spacer height: 20
14
+ form.fields_stripeToken name: 'user[stripe_token]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx'
15
+
16
+ form.spacer height: 30
17
+ form.fields_submit text: 'Submit'
14
18
  end
15
19
  end
File without changes
File without changes
File without changes
File without changes
@@ -2,7 +2,7 @@ json.title 'Lists'
2
2
 
3
3
  json_ui_page json do |page|
4
4
  render "#{@path_prefix}/nav_menu", json: json, page: page
5
-
5
+
6
6
  page.list firstSection: ->(section) do
7
7
  section.header padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(header) do
8
8
  header.h3 text: 'Section Header'
@@ -14,6 +14,14 @@ json_ui_page json do |page|
14
14
  end
15
15
  template.thumbnail title: 'Item with subtitle', subtitle: 'Item subtitle'
16
16
  template.thumbnail title: 'Item with thumbnail image', subtitle: 'Item subtitle', imageUrl: glib_json_image_standard_url
17
+ template.thumbnail title: 'Item with accessories', subtitle: 'Item subtitle', accessoryViews: ->(thumbnail) do
18
+ thumbnail.panels_horizontal childViews: ->(horizontal) do
19
+ horizontal.chip text: 'finished'
20
+ horizontal.spacer width: 10
21
+ horizontal.chip text: 'succeeded'
22
+ end
23
+ end
24
+
17
25
  template.featured title: 'Featured with featured image', subtitle: 'Item subtitle', imageUrl: glib_json_image_standard_url
18
26
  end
19
27
  end
@@ -4,23 +4,23 @@ json_ui_page json do |page|
4
4
  render "#{@path_prefix}/nav_menu", json: json, page: page
5
5
 
6
6
  page.template 'flatCentered'
7
-
7
+
8
8
  page.header childViews: ->(header) do
9
- header.panels_card width: 'matchParent', padding: glib_json_padding_body, childViews: ->(card) do
10
- card.h1 text: 'Header'
9
+ header.panels_vertical width: 'matchParent', styleClass: 'card', padding: glib_json_padding_body, childViews: ->(vertical) do
10
+ vertical.h1 text: 'Header'
11
11
  end
12
12
  header.spacer height: 20
13
13
  end
14
14
 
15
15
  page.footer childViews: ->(footer) do
16
16
  footer.spacer height: 20
17
- footer.panels_card width: 'matchParent', padding: glib_json_padding_body, childViews: ->(card) do
18
- card.h1 text: 'Footer'
17
+ footer.panels_vertical width: 'matchParent', styleClass: 'card', padding: glib_json_padding_body, childViews: ->(vertical) do
18
+ vertical.h1 text: 'Footer'
19
19
  end
20
20
  end
21
21
 
22
22
  page.body childViews: ->(scroll) do
23
- scroll.panels_card width: 'matchParent', padding: glib_json_padding_body, childViews: ->(card) do
23
+ scroll.panels_vertical width: 'matchParent', styleClass: 'card', padding: glib_json_padding_body, childViews: ->(vertical) do
24
24
  (1..100).each do |index|
25
25
  scroll.label text: 'Content'
26
26
  end
@@ -4,25 +4,25 @@ json_ui_page json do |page|
4
4
  render "#{@path_prefix}/nav_menu", json: json, page: page
5
5
 
6
6
  page.template 'fullWidth'
7
-
7
+
8
8
  page.header childViews: ->(header) do
9
- header.panels_card width: 'matchParent', padding: glib_json_padding_body, childViews: ->(card) do
10
- card.h1 text: 'Header'
9
+ header.panels_vertical width: 'matchParent', styleClass: 'card', padding: glib_json_padding_body, childViews: ->(vertical) do
10
+ vertical.h1 text: 'Header'
11
11
  end
12
12
  header.spacer height: 10
13
13
  end
14
14
 
15
15
  page.footer childViews: ->(footer) do
16
16
  footer.spacer height: 10
17
- footer.panels_card width: 'matchParent', padding: glib_json_padding_body, childViews: ->(card) do
18
- card.h1 text: 'Footer'
17
+ footer.panels_vertical width: 'matchParent', styleClass: 'card', padding: glib_json_padding_body, childViews: ->(vertical) do
18
+ vertical.h1 text: 'Footer'
19
19
  end
20
20
  end
21
21
 
22
22
  page.body childViews: ->(scroll) do
23
- scroll.panels_card width: 'matchParent', padding: glib_json_padding_body, childViews: ->(card) do
23
+ scroll.panels_vertical width: 'matchParent', styleClass: 'card', padding: glib_json_padding_body, childViews: ->(vertical) do
24
24
  (1..100).each do |index|
25
- scroll.label text: 'Content'
25
+ vertical.label text: 'Content'
26
26
  end
27
27
  end
28
28
  end
File without changes
File without changes
File without changes
@@ -2,31 +2,8 @@ json.title 'Panels'
2
2
 
3
3
  json_ui_page json do |page|
4
4
  render "#{@path_prefix}/nav_menu", json: json, page: page
5
-
6
- page.scroll backgroundColor: '#fafafa', padding: { top: 10, right: 10, bottom: 10, left: 10 }, childViews: ->(scroll) do
7
-
8
-
9
- # TODO: Deprecate in favour of styleClasses
10
- # scroll.panels_card width: 'matchParent', padding: glib_json_padding_body, childViews: ->(card) do
11
- # card.h1 text: 'With Default Layout'
12
- # card.spacer height: 6
13
- # card.button text: 'Button1'
14
- # card.button text: 'Button2'
15
- # card.button text: 'Button3'
16
- # end
17
5
 
18
- # scroll.spacer height: 10
19
-
20
- # scroll.panels_card width: 'matchParent', padding: glib_json_padding_body, childViews: ->(card) do
21
- # card.h1 text: 'With Child Panel'
22
- # card.spacer height: 6
23
- # card.panels_horizontal backgroundColor: '#b3bac2', childViews: ->(panel) do
24
- # panel.button text: 'Button1'
25
- # panel.button text: 'Button2'
26
- # panel.button text: 'Button3'
27
- # end
28
- # end
29
-
6
+ page.scroll backgroundColor: '#fafafa', padding: { top: 10, right: 10, bottom: 10, left: 10 }, childViews: ->(scroll) do
30
7
  scroll.h2 text: 'Vertical panel'
31
8
  scroll.spacer height: 6
32
9
  scroll.panels_vertical styleClass: 'card', padding: glib_json_padding_body, width: 'matchParent', childViews: ->(panel) do
@@ -54,7 +31,7 @@ json_ui_page json do |page|
54
31
  # end, rightViews: ->(panel) do
55
32
  # panel.button text: '3'
56
33
  # end
57
-
34
+
58
35
  scroll.spacer height: 20
59
36
  scroll.h2 text: 'Split panel'
60
37
  scroll.spacer height: 6
@@ -69,16 +46,16 @@ json_ui_page json do |page|
69
46
  right.button text: '3'
70
47
  end
71
48
  end
72
-
49
+
73
50
 
74
51
  scroll.spacer height: 20
75
52
  scroll.h2 text: 'Responsive panel'
76
53
  scroll.spacer height: 6
77
- scroll.panels_responsive styleClass: 'card', padding: glib_json_padding_body, childViews: ->(horizontal) do
78
- horizontal.panels_column lg: 8, backgroundColor: '#c3cad2', childViews: ->(column) do
54
+ scroll.panels_responsive styleClass: 'card', padding: glib_json_padding_body, width: 'matchParent', childViews: ->(horizontal) do
55
+ horizontal.panels_column lg: { cols: 8 }, backgroundColor: '#c3cad2', childViews: ->(column) do
79
56
  column.button text: '1'
80
57
  end
81
- horizontal.panels_column lg: 4, backgroundColor: '#b3bac2', childViews: ->(column) do
58
+ horizontal.panels_column lg: { cols: 4 }, backgroundColor: '#b3bac2', childViews: ->(column) do
82
59
  column.button text: '2'
83
60
  end
84
61
  end
@@ -86,24 +63,24 @@ json_ui_page json do |page|
86
63
  scroll.spacer height: 20
87
64
  scroll.h2 text: 'Grid-like layout'
88
65
  scroll.spacer height: 6
89
- scroll.panels_responsive childViews: ->(horizontal) do
66
+ scroll.panels_responsive width: 'matchParent', childViews: ->(horizontal) do
90
67
  gap = { top: 12, left: 10, right: 10, bottom: 12 }
91
- horizontal.panels_column lg: 4, padding: gap, childViews: ->(column) do
68
+ horizontal.panels_column lg: { cols: 4 }, padding: gap, childViews: ->(column) do
92
69
  column.panels_vertical styleClass: 'card', width: 'matchParent', padding: glib_json_padding_body, childViews: ->(column) do
93
70
  column.button text: '1'
94
71
  end
95
72
  end
96
- horizontal.panels_column lg: 4, padding: gap, childViews: ->(column) do
73
+ horizontal.panels_column lg: { cols: 4 }, padding: gap, childViews: ->(column) do
97
74
  column.panels_vertical styleClass: 'card', width: 'matchParent', padding: glib_json_padding_body, childViews: ->(column) do
98
75
  column.button text: '2'
99
76
  end
100
77
  end
101
- horizontal.panels_column lg: 4, padding: gap, childViews: ->(column) do
78
+ horizontal.panels_column lg: { cols: 4 }, padding: gap, childViews: ->(column) do
102
79
  column.panels_vertical styleClass: 'card', width: 'matchParent', padding: glib_json_padding_body, childViews: ->(column) do
103
80
  column.button text: '3'
104
81
  end
105
82
  end
106
- horizontal.panels_column lg: 4, padding: gap, childViews: ->(column) do
83
+ horizontal.panels_column lg: { cols: 4 }, padding: gap, childViews: ->(column) do
107
84
  column.panels_vertical styleClass: 'card', width: 'matchParent', padding: glib_json_padding_body, childViews: ->(column) do
108
85
  column.button text: '4'
109
86
  end
File without changes
@@ -2,7 +2,7 @@ json.title 'Panels'
2
2
 
3
3
  json_ui_page json do |page|
4
4
  render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
5
-
5
+
6
6
  page.list sections: [
7
7
  ->(section) do
8
8
  section.header padding: glib_json_padding_list, childViews: ->(header) do
@@ -24,7 +24,7 @@ json_ui_page json do |page|
24
24
  template.thumbnail title: 'Responsive', subtitle: 'Arrange *column panels* horizontally using flex', onClick: ->(action) do
25
25
  action.windows_open url: json_ui_garage_url(path: 'panels/responsive')
26
26
  end
27
-
27
+
28
28
  end
29
29
  end, ->(section) do
30
30
  section.header padding: glib_json_padding_list, childViews: ->(header) do
@@ -54,7 +54,7 @@ json_ui_page json do |page|
54
54
  template.thumbnail title: 'List', subtitle: 'Rows without columns', onClick: ->(action) do
55
55
  action.windows_open url: json_ui_garage_url(path: 'lists/index')
56
56
  end
57
-
57
+
58
58
  end
59
59
  end, ->(section) do
60
60
  section.header padding: glib_json_padding_list, childViews: ->(header) do
@@ -73,7 +73,7 @@ json_ui_page json do |page|
73
73
  template.thumbnail title: 'Column', subtitle: 'Adds control over layout inside a responsive panel', onClick: ->(action) do
74
74
  action.windows_open url: json_ui_garage_url(path: 'panels/responsive')
75
75
  end
76
-
76
+
77
77
  end
78
78
  end, ->(section) do
79
79
  section.header padding: glib_json_padding_list, childViews: ->(header) do
@@ -84,7 +84,7 @@ json_ui_page json do |page|
84
84
  template.thumbnail title: 'Custom', onClick: ->(action) do
85
85
  action.windows_open url: json_ui_garage_url(path: 'panels/custom')
86
86
  end
87
-
87
+
88
88
  end
89
89
  end, ->(section) do
90
90
  section.header padding: glib_json_padding_list, childViews: ->(header) do
@@ -95,9 +95,23 @@ json_ui_page json do |page|
95
95
  template.thumbnail title: 'Card', onClick: ->(action) do
96
96
  action.windows_open url: json_ui_garage_url(path: 'panels/card')
97
97
  end
98
-
98
+
99
+ end
100
+ end, ->(section) do
101
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
102
+ header.h2 text: 'Uncategorized'
103
+ end
104
+
105
+ section.rows builder: ->(template) do
106
+ template.thumbnail title: 'Dynamic Group', onClick: ->(action) do
107
+ # TODO
108
+ end
109
+
110
+ template.thumbnail title: 'List Template Accessory', onClick: ->(action) do
111
+ # TODO
112
+ end
99
113
  end
100
- end,
114
+ end
101
115
  ]
102
116
 
103
117
  end