glib-web 0.5.5

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 (158) hide show
  1. checksums.yaml +7 -0
  2. data/app/controllers/concerns/glib/auth/policy.rb +148 -0
  3. data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -0
  4. data/app/controllers/concerns/glib/json/libs.rb +144 -0
  5. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -0
  6. data/app/controllers/concerns/glib/json/transformation.rb +11 -0
  7. data/app/controllers/concerns/glib/json/traversal.rb +85 -0
  8. data/app/controllers/concerns/glib/json/ui.rb +70 -0
  9. data/app/controllers/concerns/glib/json/validation.rb +13 -0
  10. data/app/controllers/glib/home_controller.rb +16 -0
  11. data/app/helpers/glib/app_feature_support_helper.rb +16 -0
  12. data/app/helpers/glib/dynamic_images_helper.rb +52 -0
  13. data/app/helpers/glib/dynamic_texts_helper.rb +42 -0
  14. data/app/helpers/glib/forms_helper.rb +15 -0
  15. data/app/helpers/glib/json_ui/abstract_builder.rb +281 -0
  16. data/app/helpers/glib/json_ui/action_builder.rb +81 -0
  17. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -0
  18. data/app/helpers/glib/json_ui/action_builder/http.rb +19 -0
  19. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -0
  20. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -0
  21. data/app/helpers/glib/json_ui/action_builder/windows.rb +25 -0
  22. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -0
  23. data/app/helpers/glib/json_ui/generic_builders.rb +28 -0
  24. data/app/helpers/glib/json_ui/list_builders.rb +87 -0
  25. data/app/helpers/glib/json_ui/menu_builder.rb +52 -0
  26. data/app/helpers/glib/json_ui/page_helper.rb +187 -0
  27. data/app/helpers/glib/json_ui/response_helper.rb +23 -0
  28. data/app/helpers/glib/json_ui/split_builders.rb +32 -0
  29. data/app/helpers/glib/json_ui/styling_helper.rb +25 -0
  30. data/app/helpers/glib/json_ui/table_builders.rb +74 -0
  31. data/app/helpers/glib/json_ui/view_builder.rb +185 -0
  32. data/app/helpers/glib/json_ui/view_builder/banners.rb +24 -0
  33. data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -0
  34. data/app/helpers/glib/json_ui/view_builder/fields.rb +213 -0
  35. data/app/helpers/glib/json_ui/view_builder/panels.rb +219 -0
  36. data/app/models/glib/active_storage/attachment.rb +9 -0
  37. data/app/models/glib/active_storage/blob.rb +9 -0
  38. data/app/models/glib/dynamic_text_record.rb +9 -0
  39. data/app/models/glib/text.rb +96 -0
  40. data/app/policies/glib/application_policy.rb +164 -0
  41. data/app/validators/email_typo_validator.rb +38 -0
  42. data/app/validators/email_validator.rb +7 -0
  43. data/app/validators/url_validator.rb +20 -0
  44. data/app/views/app/views/json_ui/vue/renderer.html.erb +35 -0
  45. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +71 -0
  46. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -0
  47. data/app/views/json_ui/garage/actions/_http.json.jbuilder +18 -0
  48. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -0
  49. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +19 -0
  50. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -0
  51. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +18 -0
  52. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -0
  53. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -0
  54. data/app/views/json_ui/garage/actions/index.json.jbuilder +23 -0
  55. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +7 -0
  56. data/app/views/json_ui/garage/forms/basic.json.jbuilder +34 -0
  57. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -0
  58. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +44 -0
  59. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +41 -0
  60. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +25 -0
  61. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -0
  62. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +58 -0
  63. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +31 -0
  64. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -0
  65. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +28 -0
  66. data/app/views/json_ui/garage/forms/index.json.jbuilder +101 -0
  67. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +46 -0
  68. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -0
  69. data/app/views/json_ui/garage/forms/selects.json.jbuilder +70 -0
  70. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +88 -0
  71. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +32 -0
  72. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -0
  73. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +24 -0
  74. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -0
  75. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -0
  76. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +22 -0
  77. data/app/views/json_ui/garage/home/blank.json.jbuilder +11 -0
  78. data/app/views/json_ui/garage/home/index.json.jbuilder +32 -0
  79. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -0
  80. data/app/views/json_ui/garage/lists/_infinite_scroll_section.json.jbuilder +20 -0
  81. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +19 -0
  82. data/app/views/json_ui/garage/lists/fab.json.jbuilder +14 -0
  83. data/app/views/json_ui/garage/lists/index.json.jbuilder +23 -0
  84. data/app/views/json_ui/garage/lists/infinite_scroll.json.jbuilder +38 -0
  85. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -0
  86. data/app/views/json_ui/garage/notifications/index.json.jbuilder +18 -0
  87. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -0
  88. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -0
  89. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -0
  90. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -0
  91. data/app/views/json_ui/garage/pages/index.json.jbuilder +47 -0
  92. data/app/views/json_ui/garage/pages/layout.json.jbuilder +19 -0
  93. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -0
  94. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -0
  95. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +27 -0
  96. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -0
  97. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -0
  98. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +16 -0
  99. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -0
  100. data/app/views/json_ui/garage/panels/flow.json.jbuilder +49 -0
  101. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -0
  102. data/app/views/json_ui/garage/panels/index.json.jbuilder +132 -0
  103. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -0
  104. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +88 -0
  105. data/app/views/json_ui/garage/panels/split.json.jbuilder +183 -0
  106. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +50 -0
  107. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -0
  108. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -0
  109. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -0
  110. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +13 -0
  111. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +38 -0
  112. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +39 -0
  113. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -0
  114. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -0
  115. data/app/views/json_ui/garage/tables/index.json.jbuilder +26 -0
  116. data/app/views/json_ui/garage/tables/layout.json.jbuilder +38 -0
  117. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -0
  118. data/app/views/json_ui/garage/views/banners.json.jbuilder +51 -0
  119. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -0
  120. data/app/views/json_ui/garage/views/carousels.json.jbuilder +37 -0
  121. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -0
  122. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -0
  123. data/app/views/json_ui/garage/views/index.json.jbuilder +48 -0
  124. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -0
  125. data/app/views/json_ui/garage/views/map_data.json.jbuilder +43 -0
  126. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -0
  127. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -0
  128. data/app/views/json_ui/garage/views/texts.json.jbuilder +41 -0
  129. data/app/views/layouts/json_ui/renderer.html.erb +32 -0
  130. data/config/routes.rb +8 -0
  131. data/lib/generators/glib/install_generator.rb +24 -0
  132. data/lib/generators/templates/20191017062519_create_texts.rb +12 -0
  133. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -0
  134. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -0
  135. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -0
  136. data/lib/generators/templates/database.yml +107 -0
  137. data/lib/generators/templates/dynamic_text.rb +2 -0
  138. data/lib/glib-web.rb +8 -0
  139. data/lib/glib/crypt.rb +1 -0
  140. data/lib/glib/crypt/utils.rb +26 -0
  141. data/lib/glib/dynamic_text.rb +1 -0
  142. data/lib/glib/dynamic_text/config.rb +21 -0
  143. data/lib/glib/engine.rb +7 -0
  144. data/lib/glib/json_crawler.rb +10 -0
  145. data/lib/glib/json_crawler/action_crawler.rb +20 -0
  146. data/lib/glib/json_crawler/action_crawlers/action_http.rb +14 -0
  147. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -0
  148. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -0
  149. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +15 -0
  150. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +28 -0
  151. data/lib/glib/json_crawler/coverage.rb +20 -0
  152. data/lib/glib/json_crawler/http.rb +120 -0
  153. data/lib/glib/json_crawler/router.rb +86 -0
  154. data/lib/glib/test_helpers.rb +40 -0
  155. data/lib/glib/value.rb +7 -0
  156. data/lib/glib/version.rb +5 -0
  157. data/lib/tasks/db.rake +95 -0
  158. metadata +246 -0
@@ -0,0 +1,78 @@
1
+ json.title 'Panels'
2
+
3
+ render "#{@path_prefix}/nav_menu", json: json, page: page
4
+
5
+ page.scroll backgroundColor: '#fafafa', padding: { top: 10, right: 10, bottom: 10, left: 10 }, childViews: ->(scroll) do
6
+ scroll.h2 text: 'Vertical panel'
7
+ scroll.spacer height: 6
8
+ scroll.panels_vertical styleClasses: styleClasses, padding: glib_json_padding_body, width: 'matchParent', childViews: ->(panel) do
9
+ panel.button text: 'Button1'
10
+ panel.button text: 'Button2'
11
+ panel.button text: 'Button3'
12
+ end
13
+
14
+ scroll.spacer height: 20
15
+ scroll.h2 text: 'Horizontal panel'
16
+ scroll.spacer height: 6
17
+ scroll.panels_horizontal styleClasses: styleClasses, padding: glib_json_padding_body, width: 'matchParent', childViews: ->(panel) do
18
+ panel.button text: 'Button1'
19
+ panel.button text: 'Button2'
20
+ panel.button text: 'Button3'
21
+ end
22
+
23
+ scroll.spacer height: 20
24
+ scroll.h2 text: 'Split panel'
25
+ scroll.spacer height: 6
26
+ scroll.panels_split styleClasses: styleClasses, padding: glib_json_padding_body, width: 'matchParent', content: ->(split) do
27
+ split.left childViews: ->(left) do
28
+ left.button text: '1'
29
+ end
30
+ split.center childViews: ->(center) do
31
+ center.button width: 'matchParent', text: '2'
32
+ end
33
+ split.right childViews: ->(right) do
34
+ right.button text: '3'
35
+ end
36
+ end
37
+
38
+
39
+ scroll.spacer height: 20
40
+ scroll.h2 text: 'Responsive panel'
41
+ scroll.spacer height: 6
42
+ scroll.panels_responsive styleClasses: styleClasses, padding: glib_json_padding_body, width: 'matchParent', childViews: ->(horizontal) do
43
+ horizontal.panels_column lg: { cols: 8 }, backgroundColor: '#c3cad2', childViews: ->(column) do
44
+ column.button text: '1'
45
+ end
46
+ horizontal.panels_column lg: { cols: 4 }, backgroundColor: '#b3bac2', childViews: ->(column) do
47
+ column.button text: '2'
48
+ end
49
+ end
50
+
51
+ scroll.spacer height: 20
52
+ scroll.h2 text: 'Grid-like layout'
53
+ scroll.spacer height: 6
54
+ scroll.panels_responsive width: 'matchParent', childViews: ->(horizontal) do
55
+ gap = { top: 12, left: 10, right: 10, bottom: 12 }
56
+ horizontal.panels_column lg: { cols: 4 }, padding: gap, childViews: ->(column) do
57
+ column.panels_vertical styleClasses: styleClasses, width: 'matchParent', padding: glib_json_padding_body, childViews: ->(column) do
58
+ column.button text: '1'
59
+ end
60
+ end
61
+ horizontal.panels_column lg: { cols: 4 }, padding: gap, childViews: ->(column) do
62
+ column.panels_vertical styleClasses: styleClasses, width: 'matchParent', padding: glib_json_padding_body, childViews: ->(column) do
63
+ column.button text: '2'
64
+ end
65
+ end
66
+ horizontal.panels_column lg: { cols: 4 }, padding: gap, childViews: ->(column) do
67
+ column.panels_vertical styleClasses: styleClasses, width: 'matchParent', padding: glib_json_padding_body, childViews: ->(column) do
68
+ column.button text: '3'
69
+ end
70
+ end
71
+ horizontal.panels_column lg: { cols: 4 }, padding: gap, childViews: ->(column) do
72
+ column.panels_vertical styleClasses: styleClasses, width: 'matchParent', padding: glib_json_padding_body, childViews: ->(column) do
73
+ column.button text: '4'
74
+ end
75
+ end
76
+ end
77
+
78
+ end
@@ -0,0 +1,4 @@
1
+ json.title 'Card Panels'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/panels/styled", json: json, page: page, styleClasses: ['card']
@@ -0,0 +1,16 @@
1
+ json.title 'Panels'
2
+
3
+ image_url1 = 'http://ichef.bbci.co.uk/news/976/cpsprodpb/18106/production/_97266589_gettyimages-474547165.jpg'
4
+ image_url2 = 'https://s.abcnews.com/images/International/Guam03-gty-jrl-170809_16x9_992.jpg'
5
+
6
+ json_ui_page json do |page|
7
+ render "#{@path_prefix}/nav_menu", json: json, page: page
8
+
9
+ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
10
+ scroll.h1 text: 'Carousel panel'
11
+ scroll.panels_carousel width: 'matchParent', childViews: ->(carousel) do
12
+ carousel.image url: image_url1, width: 'matchParent'
13
+ carousel.image url: image_url2, width: 'matchParent'
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ json.title 'Panels'
2
+
3
+ json_ui_page json do |page|
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
7
+ scroll.h2 text: 'Thumbnail Template'
8
+ scroll.spacer height: 6
9
+ scroll.panels_custom template: 'thumbnail', width: 'matchParent', backgroundColor: '#fafafa',
10
+ data: { imageUrl: glib_json_image_standard_url, title: 'Title', subtitle: 'Use the same template from list templates' }
11
+
12
+ scroll.spacer height: 20
13
+ scroll.h2 text: 'Non-existent Template'
14
+ scroll.spacer height: 6
15
+ scroll.panels_custom template: 'nonExistentTemplate'
16
+ end
17
+ end
@@ -0,0 +1,49 @@
1
+ json.title 'Panels'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
7
+ scroll.h1 text: 'Basic'
8
+ scroll.panels_flow width: 300, backgroundColor: '#b3bac2', childViews: ->(panel) do
9
+ panel.button text: '1'
10
+ panel.button text: '2'
11
+ panel.button text: '3'
12
+ panel.button text: '4'
13
+ panel.button text: '5'
14
+ panel.button text: '6'
15
+ panel.button text: '7'
16
+ end
17
+
18
+ scroll.label text: "\n"
19
+ scroll.h1 text: 'Spacers'
20
+ scroll.panels_flow width: 300, backgroundColor: '#b3bac2', childViews: ->(panel) do
21
+ panel.button text: '1'
22
+ panel.spacer width: 30
23
+ panel.button text: '2'
24
+ panel.spacer width: 30
25
+ panel.button text: '3'
26
+ panel.spacer width: 30
27
+ panel.button text: '4'
28
+ panel.spacer width: 30
29
+ panel.button text: '5'
30
+ end
31
+
32
+ # scroll.label text: "\n"
33
+ # scroll.h1 text: 'Alignments'
34
+ # scroll.panels_horizontal align: 'top', childViews: ->(panel) do
35
+ # panel.button height: 50, text: 'Button'
36
+ # panel.spacer width: 10
37
+ # panel.label text: 'top'
38
+ # end
39
+ # scroll.panels_horizontal align: 'middle', childViews: ->(panel) do
40
+ # panel.button height: 50, text: 'Button'
41
+ # panel.spacer width: 10
42
+ # panel.label text: 'middle'
43
+ # end
44
+ # scroll.panels_horizontal align: 'bottom', childViews: ->(panel) do
45
+ # panel.button height: 50, text: 'Button'
46
+ # panel.spacer width: 10
47
+ # panel.label text: 'bottom'
48
+ # end
49
+ end
@@ -0,0 +1,91 @@
1
+ json.title 'Panels'
2
+
3
+ json_ui_page json do |page|
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
7
+ scroll.h1 text: 'Basic'
8
+ scroll.panels_horizontal backgroundColor: '#b3bac2', childViews: ->(panel) do
9
+ panel.button text: '1'
10
+ panel.button text: '2'
11
+ panel.button text: '3'
12
+ end
13
+
14
+ scroll.label text: "\n"
15
+ scroll.h1 text: 'Equal filling'
16
+ scroll.panels_horizontal backgroundColor: '#b3bac2', width: 300, distribution: 'fillEqually', childViews: ->(panel) do
17
+ panel.button text: '1'
18
+ panel.button text: '2', height: 50
19
+ panel.button text: '3', height: 70
20
+ end
21
+
22
+ scroll.label text: "\n"
23
+ scroll.h1 text: 'Equal spacing'
24
+ scroll.panels_horizontal backgroundColor: '#b3bac2', width: 300, distribution: 'spaceEqually', childViews: ->(panel) do
25
+ panel.button text: '1'
26
+ panel.button text: '2'
27
+ panel.button text: '3'
28
+ end
29
+
30
+ scroll.label text: "\n"
31
+ scroll.h1 text: 'Vertical panel combo'
32
+ scroll.panels_horizontal distribution: 'spaceEqually', childViews: ->(panel) do
33
+ panel.button text: '1'
34
+ panel.panels_vertical childViews: ->(v) do
35
+ v.button text: 'A'
36
+ v.button text: 'B'
37
+ end
38
+ panel.button text: '3'
39
+ end
40
+
41
+ scroll.label text: "\n"
42
+ scroll.h1 text: 'Vertical panel combo (equal filling)'
43
+ scroll.panels_horizontal width: 'matchParent', distribution: 'fillEqually', childViews: ->(panel) do
44
+ panel.button text: '1'
45
+ panel.panels_vertical childViews: ->(v) do
46
+ v.button text: 'A'
47
+ v.button text: 'B'
48
+ end
49
+ panel.button text: '3'
50
+ end
51
+
52
+ scroll.label text: "\n"
53
+ scroll.h1 text: 'Vertical panel combo (equal spacing)'
54
+ scroll.panels_horizontal width: 'matchParent', distribution: 'spaceEqually', childViews: ->(panel) do
55
+ panel.button text: '1'
56
+ panel.panels_vertical childViews: ->(v) do
57
+ v.button text: 'A'
58
+ v.button text: 'B'
59
+ end
60
+ panel.button text: '3'
61
+ end
62
+
63
+ scroll.label text: "\n"
64
+ scroll.h1 text: 'Spacers'
65
+ scroll.panels_horizontal width: 'matchParent', childViews: ->(panel) do
66
+ panel.button text: '1'
67
+ panel.spacer width: 10
68
+ panel.button text: '2'
69
+ panel.spacer width: 50
70
+ panel.button text: '3'
71
+ end
72
+
73
+ scroll.label text: "\n"
74
+ scroll.h1 text: 'Alignments'
75
+ scroll.panels_horizontal align: 'top', childViews: ->(panel) do
76
+ panel.button height: 50, text: 'Button'
77
+ panel.spacer width: 10
78
+ panel.label text: 'top'
79
+ end
80
+ scroll.panels_horizontal align: 'middle', childViews: ->(panel) do
81
+ panel.button height: 50, text: 'Button'
82
+ panel.spacer width: 10
83
+ panel.label text: 'middle'
84
+ end
85
+ scroll.panels_horizontal align: 'bottom', childViews: ->(panel) do
86
+ panel.button height: 50, text: 'Button'
87
+ panel.spacer width: 10
88
+ panel.label text: 'bottom'
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,132 @@
1
+ json.title 'Panels'
2
+
3
+ json_ui_page json do |page|
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page, top_nav: true
5
+
6
+ page.list sections: [
7
+ ->(section) do
8
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
9
+ header.h2 text: 'Layout for child components'
10
+ header.spacer height: 6
11
+ header.label text: 'May contain infinite number of child components'
12
+ end
13
+
14
+ section.rows builder: ->(template) do
15
+ template.thumbnail title: 'Vertical', subtitle: 'Arrange child components vertically', onClick: ->(action) do
16
+ action.windows_open url: json_ui_garage_url(path: 'panels/vertical')
17
+ end
18
+ template.thumbnail title: 'Horizontal', subtitle: 'Arrange child components horizontally', onClick: ->(action) do
19
+ action.windows_open url: json_ui_garage_url(path: 'panels/horizontal')
20
+ end
21
+ template.thumbnail title: 'Flow', subtitle: 'Arrange components in a left-to-right flow, much like lines of text in a paragraph', onClick: ->(action) do
22
+ action.windows_open url: json_ui_garage_url(path: 'panels/flow')
23
+ end
24
+ template.thumbnail title: 'Carousel', subtitle: 'Arrange child components horizontally in a carousel', onClick: ->(action) do
25
+ action.windows_open url: json_ui_garage_url(path: 'panels/carousel')
26
+ end
27
+ template.thumbnail title: 'Responsive', subtitle: 'Arrange *column panels* horizontally using flex', onClick: ->(action) do
28
+ action.windows_open url: json_ui_garage_url(path: 'panels/responsive')
29
+ end
30
+
31
+ end
32
+ end, ->(section) do
33
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
34
+ header.h2 text: 'Layout with predefined sub-panels'
35
+ header.spacer height: 6
36
+ header.label text: 'Each sub-panel is a responsive panel'
37
+ end
38
+
39
+ section.rows builder: ->(template) do
40
+ template.thumbnail title: 'Split', subtitle: 'Sub-panels: left, center, right', onClick: ->(action) do
41
+ action.windows_open url: json_ui_garage_url(path: 'panels/split')
42
+ end
43
+ template.thumbnail title: 'Page', subtitle: 'Sub-panels: header, body, footer', onClick: ->(action) do
44
+ action.windows_open url: json_ui_garage_url(path: 'pages/index')
45
+ end
46
+ template.thumbnail title: 'List', subtitle: 'Sub-panels: header, footer', onClick: ->(action) do
47
+ action.windows_open url: json_ui_garage_url(path: 'lists/index')
48
+ end
49
+ template.thumbnail title: 'Table (Web Only)', subtitle: 'Sub-panels: header, footer', onClick: ->(action) do
50
+ action.windows_open url: json_ui_garage_url(path: 'tables/index')
51
+ end
52
+
53
+ end
54
+ end, ->(section) do
55
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
56
+ header.h2 text: 'Layout with uniform rows'
57
+ end
58
+
59
+ section.rows builder: ->(template) do
60
+ template.thumbnail title: 'List', subtitle: 'Rows without columns', onClick: ->(action) do
61
+ action.windows_open url: json_ui_garage_url(path: 'lists/index')
62
+ end
63
+ template.thumbnail title: 'Table (Web Only)', subtitle: 'Rows with columns', onClick: ->(action) do
64
+ action.windows_open url: json_ui_garage_url(path: 'tables/index')
65
+ end
66
+
67
+ end
68
+ end, ->(section) do
69
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
70
+ header.h2 text: 'Non-layout'
71
+ header.spacer height: 6
72
+ header.label text: 'Adds functionality to a responsive layout'
73
+ end
74
+
75
+ section.rows builder: ->(template) do
76
+ template.thumbnail title: 'Scroll', subtitle: 'Adds scrolling', onClick: ->(action) do
77
+ action.windows_open url: json_ui_garage_url(path: 'pages/index')
78
+ end
79
+ template.thumbnail title: 'Form', subtitle: 'Adds form functionality', onClick: ->(action) do
80
+ action.windows_open url: json_ui_garage_url(path: 'forms/index')
81
+ end
82
+ template.thumbnail title: 'Column', subtitle: 'Adds control over layout inside a responsive panel', onClick: ->(action) do
83
+ action.windows_open url: json_ui_garage_url(path: 'panels/responsive')
84
+ end
85
+
86
+ end
87
+ end, ->(section) do
88
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
89
+ header.h2 text: 'Child-less Layout'
90
+ end
91
+
92
+ section.rows builder: ->(template) do
93
+ template.thumbnail title: 'Custom', onClick: ->(action) do
94
+ action.windows_open url: json_ui_garage_url(path: 'panels/custom')
95
+ end
96
+
97
+ end
98
+ end, ->(section) do
99
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
100
+ header.h2 text: 'Styling'
101
+ end
102
+
103
+ section.rows builder: ->(template) do
104
+ template.thumbnail title: 'Card', onClick: ->(action) do
105
+ action.windows_open url: json_ui_garage_url(path: 'panels/card')
106
+ end
107
+ end
108
+
109
+ section.rows builder: ->(template) do
110
+ template.thumbnail title: 'Outlined', onClick: ->(action) do
111
+ action.windows_open url: json_ui_garage_url(path: 'panels/outlined')
112
+ end
113
+
114
+ end
115
+ end, ->(section) do
116
+ section.header padding: glib_json_padding_list, childViews: ->(header) do
117
+ header.h2 text: 'Uncategorized'
118
+ end
119
+
120
+ section.rows builder: ->(template) do
121
+ template.thumbnail title: 'Dynamic Group', onClick: ->(action) do
122
+ # TODO
123
+ end
124
+
125
+ template.thumbnail title: 'List Template Accessory', onClick: ->(action) do
126
+ # TODO
127
+ end
128
+ end
129
+ end
130
+ ]
131
+
132
+ end
@@ -0,0 +1,4 @@
1
+ json.title 'Outlined Panels'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/panels/styled", json: json, page: page, styleClasses: ['card', 'outlined']
@@ -0,0 +1,88 @@
1
+ json.title 'Responsive Panels'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
7
+ scroll.label text: 'Shrink the browser\'s width to see how the column panels are rearranged. On mobile screens, they are always arranged vertically'
8
+
9
+ scroll.spacer height: 20
10
+ scroll.h2 text: 'With 12 columns'
11
+ scroll.spacer height: 6
12
+ scroll.panels_responsive width: 'matchParent', childViews: ->(horizontal) do
13
+ horizontal.panels_column lg: { cols: 8 }, backgroundColor: '#c3cad2', childViews: ->(column) do
14
+ column.button text: '1'
15
+ end
16
+ horizontal.panels_column lg: { cols: 4 }, backgroundColor: '#b3bac2', childViews: ->(column) do
17
+ column.button text: '2'
18
+ end
19
+ end
20
+
21
+ scroll.spacer height: 20
22
+ scroll.h2 text: 'With more than 12 columns'
23
+ scroll.spacer height: 6
24
+ scroll.panels_responsive width: 'matchParent', childViews: ->(horizontal) do
25
+ horizontal.panels_column lg: { cols: 4 }, backgroundColor: '#c3cad2', childViews: ->(column) do
26
+ column.button text: '1'
27
+ end
28
+ horizontal.panels_column lg: { cols: 4 }, backgroundColor: '#b3bac2', childViews: ->(column) do
29
+ column.button text: '2'
30
+ end
31
+ horizontal.panels_column lg: { cols: 4 }, backgroundColor: '#c3cad2', childViews: ->(column) do
32
+ column.button text: '3'
33
+ end
34
+ horizontal.panels_column lg: { cols: 4 }, backgroundColor: '#b3bac2', childViews: ->(column) do
35
+ column.button text: '4'
36
+ end
37
+ horizontal.panels_column lg: { cols: 4 }, backgroundColor: '#c3cad2', childViews: ->(column) do
38
+ column.button text: '5'
39
+ end
40
+ end
41
+
42
+ scroll.spacer height: 20
43
+ scroll.h2 text: 'With responsive paddings'
44
+ scroll.spacer height: 6
45
+ scroll.panels_responsive width: 'matchParent', childViews: ->(horizontal) do
46
+ horizontal.panels_column lg: { cols: 8, padding: { right: 20 } }, childViews: ->(column) do
47
+ column.button width: 'matchParent', text: '1'
48
+ end
49
+ horizontal.panels_column lg: { cols: 4 }, childViews: ->(column) do
50
+ column.button width: 'matchParent', text: '2'
51
+ end
52
+ end
53
+
54
+ scroll.spacer height: 20
55
+ scroll.h2 text: 'With mixed components'
56
+ scroll.spacer height: 6
57
+ scroll.panels_responsive width: 'matchParent', align: 'center', childViews: ->(responsive) do
58
+ responsive.h4 text: 'Heading'
59
+
60
+ responsive.label text: 'Label'
61
+
62
+ # responsive.spacer height: 10
63
+ # responsive.image url: glib_json_image_standard_url, width: 100, height: 100
64
+
65
+ # responsive.spacer height: 10
66
+ # responsive.image url: glib_json_image_standard_url
67
+
68
+ # responsive.panels_column lg: { cols: 8, padding: { right: 20 } }, childViews: ->(column) do
69
+ # column.button width: 'matchParent', text: '1'
70
+ # end
71
+ # responsive.panels_column lg: { cols: 4 }, childViews: ->(column) do
72
+ # column.button width: 'matchParent', text: '2'
73
+ # end
74
+
75
+ responsive.panels_column lg: { cols: 8 }, backgroundColor: '#c3cad2', childViews: ->(column) do
76
+ column.button text: '1'
77
+ end
78
+ responsive.panels_column lg: { cols: 4 }, backgroundColor: '#b3bac2', childViews: ->(column) do
79
+ column.button text: '2'
80
+ end
81
+
82
+ responsive.spacer height: 10
83
+ responsive.button text: 'Button'
84
+ end
85
+
86
+ scroll.spacer height: 20
87
+
88
+ end