glib-web 0.5.43 → 0.5.44

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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
  3. data/app/controllers/concerns/glib/auth/policy.rb +148 -148
  4. data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
  5. data/app/controllers/concerns/glib/json/libs.rb +144 -144
  6. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
  7. data/app/controllers/concerns/glib/json/transformation.rb +11 -11
  8. data/app/controllers/concerns/glib/json/traversal.rb +87 -87
  9. data/app/controllers/concerns/glib/json/ui.rb +88 -88
  10. data/app/controllers/concerns/glib/json/validation.rb +13 -13
  11. data/app/controllers/glib/home_controller.rb +16 -16
  12. data/app/helpers/glib/app_feature_support_helper.rb +16 -16
  13. data/app/helpers/glib/dynamic_images_helper.rb +55 -55
  14. data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
  15. data/app/helpers/glib/enum_helper.rb +8 -8
  16. data/app/helpers/glib/forms_helper.rb +15 -15
  17. data/app/helpers/glib/json_ui/abstract_builder.rb +294 -294
  18. data/app/helpers/glib/json_ui/action_builder.rb +131 -131
  19. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  20. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  21. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
  22. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
  23. data/app/helpers/glib/json_ui/action_builder/windows.rb +26 -26
  24. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  25. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  26. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  27. data/app/helpers/glib/json_ui/list_builders.rb +104 -104
  28. data/app/helpers/glib/json_ui/menu_builder.rb +94 -94
  29. data/app/helpers/glib/json_ui/page_helper.rb +213 -213
  30. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  31. data/app/helpers/glib/json_ui/split_builders.rb +32 -32
  32. data/app/helpers/glib/json_ui/styling_helper.rb +47 -47
  33. data/app/helpers/glib/json_ui/table_builders.rb +74 -74
  34. data/app/helpers/glib/json_ui/view_builder.rb +208 -208
  35. data/app/helpers/glib/json_ui/view_builder/banners.rb +24 -24
  36. data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
  37. data/app/helpers/glib/json_ui/view_builder/fields.rb +235 -235
  38. data/app/helpers/glib/json_ui/view_builder/panels.rb +250 -250
  39. data/app/helpers/glib/urls_helper.rb +7 -7
  40. data/app/models/glib/active_storage/attachment.rb +9 -9
  41. data/app/models/glib/active_storage/blob.rb +9 -9
  42. data/app/models/glib/application_record.rb +18 -18
  43. data/app/models/glib/dynamic_text_record.rb +9 -9
  44. data/app/models/glib/text.rb +95 -95
  45. data/app/policies/glib/application_policy.rb +161 -161
  46. data/app/validators/email_typo_validator.rb +38 -38
  47. data/app/validators/email_validator.rb +7 -7
  48. data/app/validators/url_validator.rb +20 -20
  49. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
  50. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  51. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  52. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  53. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  54. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  55. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +18 -18
  56. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  57. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  58. data/app/views/json_ui/garage/actions/index.json.jbuilder +22 -22
  59. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +6 -6
  60. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  61. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  62. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
  63. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
  64. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +56 -56
  65. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +25 -25
  66. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  67. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +65 -65
  68. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +31 -31
  69. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  70. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +28 -28
  71. data/app/views/json_ui/garage/forms/index.json.jbuilder +110 -110
  72. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +40 -40
  73. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +48 -48
  74. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  75. data/app/views/json_ui/garage/forms/selects.json.jbuilder +70 -70
  76. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +105 -105
  77. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +36 -36
  78. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  79. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +24 -24
  80. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  81. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  82. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +22 -22
  83. data/app/views/json_ui/garage/home/blank.json.jbuilder +11 -11
  84. data/app/views/json_ui/garage/home/index.json.jbuilder +32 -32
  85. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  86. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
  87. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  88. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  89. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +93 -93
  90. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +54 -54
  91. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  92. data/app/views/json_ui/garage/lists/index.json.jbuilder +32 -32
  93. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +24 -24
  94. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  95. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  96. data/app/views/json_ui/garage/notifications/index.json.jbuilder +32 -32
  97. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  98. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  99. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  100. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  101. data/app/views/json_ui/garage/pages/index.json.jbuilder +58 -58
  102. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  103. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  104. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  105. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  106. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +27 -27
  107. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  108. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  109. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
  110. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  111. data/app/views/json_ui/garage/panels/flow.json.jbuilder +49 -49
  112. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
  113. data/app/views/json_ui/garage/panels/index.json.jbuilder +132 -132
  114. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  115. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  116. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  117. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +50 -50
  118. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  119. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  120. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  121. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  122. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  123. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  124. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  125. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  126. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  127. data/app/views/json_ui/garage/tables/layout.json.jbuilder +36 -36
  128. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  129. data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
  130. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  131. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
  132. data/app/views/json_ui/garage/views/icons.json.jbuilder +1450 -1450
  133. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  134. data/app/views/json_ui/garage/views/index.json.jbuilder +54 -54
  135. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  136. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  137. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  138. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  139. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  140. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  141. data/app/views/json_ui/garage/views/texts.json.jbuilder +41 -41
  142. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  143. data/config/routes.rb +7 -7
  144. data/lib/generators/glib/install_generator.rb +24 -24
  145. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  146. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  147. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  148. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  149. data/lib/generators/templates/database.yml +107 -107
  150. data/lib/generators/templates/dynamic_text.rb +2 -2
  151. data/lib/glib-web.rb +9 -9
  152. data/lib/glib/crypt/utils.rb +26 -26
  153. data/lib/glib/dynamic_text/config.rb +21 -21
  154. data/lib/glib/engine.rb +7 -7
  155. data/lib/glib/json_crawler.rb +11 -11
  156. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  157. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  158. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  159. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  160. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  161. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  162. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  163. data/lib/glib/json_crawler/coverage.rb +20 -20
  164. data/lib/glib/json_crawler/http.rb +120 -120
  165. data/lib/glib/json_crawler/router.rb +96 -96
  166. data/lib/glib/mailer_tester.rb +36 -36
  167. data/lib/glib/test_helpers.rb +40 -40
  168. data/lib/glib/value.rb +7 -7
  169. data/lib/glib/version.rb +5 -5
  170. data/lib/tasks/db.rake +95 -95
  171. metadata +2 -3
@@ -1,15 +1,15 @@
1
- class Glib::JsonUi::ActionBuilder
2
- module Sheets
3
-
4
- class Select < Action
5
- string :message
6
-
7
- def buttons(block)
8
- json.buttons do
9
- block.call page.menu_builder
10
- end
11
- end
12
- end
13
-
14
- end
15
- end
1
+ class Glib::JsonUi::ActionBuilder
2
+ module Sheets
3
+
4
+ class Select < Action
5
+ string :message
6
+
7
+ def buttons(block)
8
+ json.buttons do
9
+ block.call page.menu_builder
10
+ end
11
+ end
12
+ end
13
+
14
+ end
15
+ end
@@ -1,41 +1,41 @@
1
- class Glib::JsonUi::ActionBuilder
2
-
3
- module Snackbars
4
- class Alert < Action
5
- string :message
6
- # string :message_format
7
- action :onClose
8
-
9
- string :verticalPosition
10
- string :horizontalPosition
11
- singleton_array :styleClass, :styleClasses
12
- end
13
-
14
- # class Confirm < Action
15
- # string :message
16
- # action :onConfirm
17
- # action :onCancel
18
-
19
- # string :verticalPosition
20
- # string :horizontalPosition
21
- # singleton_array :styleClass, :styleClasses
22
- # end
23
-
24
- class Select < Action
25
- string :message
26
-
27
- string :verticalPosition
28
- string :horizontalPosition
29
- singleton_array :styleClass, :styleClasses
30
-
31
- def buttons(block)
32
- json.buttons do
33
- block.call page.menu_builder
34
- end
35
- end
36
-
37
- end
38
-
39
- end
40
-
41
- end
1
+ class Glib::JsonUi::ActionBuilder
2
+
3
+ module Snackbars
4
+ class Alert < Action
5
+ string :message
6
+ # string :message_format
7
+ action :onClose
8
+
9
+ string :verticalPosition
10
+ string :horizontalPosition
11
+ singleton_array :styleClass, :styleClasses
12
+ end
13
+
14
+ # class Confirm < Action
15
+ # string :message
16
+ # action :onConfirm
17
+ # action :onCancel
18
+
19
+ # string :verticalPosition
20
+ # string :horizontalPosition
21
+ # singleton_array :styleClass, :styleClasses
22
+ # end
23
+
24
+ class Select < Action
25
+ string :message
26
+
27
+ string :verticalPosition
28
+ string :horizontalPosition
29
+ singleton_array :styleClass, :styleClasses
30
+
31
+ def buttons(block)
32
+ json.buttons do
33
+ block.call page.menu_builder
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+ end
40
+
41
+ end
@@ -1,26 +1,26 @@
1
- class Glib::JsonUi::ActionBuilder
2
- module Windows
3
- class Close < Action
4
- action :onClose
5
- # action :onAfterClose
6
- end
7
-
8
- class CloseAll < Action
9
- action :onClose
10
- end
11
-
12
- class Open < Action
13
- string :url, cache: true
14
- action :onOpen
15
- end
16
-
17
- class OpenWeb < Action
18
- string :url
19
- end
20
-
21
- class Reload < Action
22
- string :url, cache: true
23
- action :onReload
24
- end
25
- end
26
- end
1
+ class Glib::JsonUi::ActionBuilder
2
+ module Windows
3
+ class Close < Action
4
+ action :onClose
5
+ # action :onAfterClose
6
+ end
7
+
8
+ class CloseAll < Action
9
+ action :onClose
10
+ end
11
+
12
+ class Open < Action
13
+ string :url, cache: true
14
+ action :onOpen
15
+ end
16
+
17
+ class OpenWeb < Action
18
+ string :url
19
+ end
20
+
21
+ class Reload < Action
22
+ string :url, cache: true
23
+ action :onReload
24
+ end
25
+ end
26
+ end
@@ -1,17 +1,17 @@
1
- module Glib
2
- module JsonUi
3
- module AnalyticsHelper
4
- def __json_ui_analytics(json)
5
- if try(:glib_analytics_included?)
6
- json.analytics do
7
- json.feature do
8
- json.group controller_name
9
- json.action action_name
10
- json.segment glib_analytics_feature_segment
11
- end
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
1
+ module Glib
2
+ module JsonUi
3
+ module AnalyticsHelper
4
+ def __json_ui_analytics(json)
5
+ if try(:glib_analytics_included?)
6
+ json.analytics do
7
+ json.feature do
8
+ json.group controller_name
9
+ json.action action_name
10
+ json.segment glib_analytics_feature_segment
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,25 +1,25 @@
1
- module Glib
2
- module JsonUi
3
- module DynamicFieldBuilders
4
-
5
- class Group < AbstractBuilder
6
- def initialize(json, page, template)
7
- super json, page
8
- @template = template
9
- end
10
-
11
- # string :titlePrefix
12
- def titlePrefix(string)
13
- json.titlePrefix string
14
- end
15
-
16
- def template(options = {})
17
- # json.template do
18
- page.vertical_content(options)
19
- # end
20
- end
21
- end
22
-
23
- end
24
- end
25
- end
1
+ module Glib
2
+ module JsonUi
3
+ module DynamicFieldBuilders
4
+
5
+ class Group < AbstractBuilder
6
+ def initialize(json, page, template)
7
+ super json, page
8
+ @template = template
9
+ end
10
+
11
+ # string :titlePrefix
12
+ def titlePrefix(string)
13
+ json.titlePrefix string
14
+ end
15
+
16
+ def template(options = {})
17
+ # json.template do
18
+ page.vertical_content(options)
19
+ # end
20
+ end
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -1,28 +1,28 @@
1
- module Glib
2
- module JsonUi
3
- module GenericBuilders
4
-
5
- class Content < AbstractBuilder
6
- def initialize(json, page, template)
7
- super json, page
8
- @template = template
9
- end
10
-
11
- def definePanels(names)
12
- names.each do |name|
13
- define_singleton_method(name) do |options|
14
- json.set!(name) { page.vertical_content(options) }
15
- end
16
- end
17
- end
18
-
19
- # def body(options = {})
20
- # json.body do
21
- # page.vertical_content(options)
22
- # end
23
- # end
24
- end
25
-
26
- end
27
- end
28
- end
1
+ module Glib
2
+ module JsonUi
3
+ module GenericBuilders
4
+
5
+ class Content < AbstractBuilder
6
+ def initialize(json, page, template)
7
+ super json, page
8
+ @template = template
9
+ end
10
+
11
+ def definePanels(names)
12
+ names.each do |name|
13
+ define_singleton_method(name) do |options|
14
+ json.set!(name) { page.vertical_content(options) }
15
+ end
16
+ end
17
+ end
18
+
19
+ # def body(options = {})
20
+ # json.body do
21
+ # page.vertical_content(options)
22
+ # end
23
+ # end
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -1,104 +1,104 @@
1
- module Glib
2
- module JsonUi
3
- module ListBuilders
4
- class Template < AbstractBuilder
5
- def method_missing(m, *args)
6
- add_element_to_array 'template', m, *args
7
- end
8
-
9
- class AbstractTemplate < JsonUiElement
10
- menu :leftButtons
11
- menu :rightButtons
12
- menu :editButtons
13
- menu :chips
14
-
15
- # def editButtons(block)
16
- # json.editButtons do
17
- # block.call page.menu_builder
18
- # end
19
- # end
20
-
21
- # def chips(block)
22
- # json.chips do
23
- # block.call page.menu_builder
24
- # end
25
- # end
26
- end
27
-
28
- class Standard < AbstractTemplate
29
- string :id
30
- string :title
31
- string :subtitle
32
- string :subsubtitle
33
- string :imageUrl
34
- action :onClick
35
- action :onLongPress
36
- icon :icon
37
- bool :avatar
38
- action :onReorder
39
- string :paramNameForFormData
40
- string :paramNameForNewIndex
41
-
42
- # # NOTE: Experimental. Still deciding whether this needs to be a full blown panel or
43
- # # an array of badges (with relevant properties, e.g. text, color, etc)
44
- # views :accessoryViews
45
- end
46
-
47
- class Featured < Standard
48
- end
49
-
50
- class Thumbnail < Standard
51
- end
52
-
53
- class CommentOutgoing < Standard
54
- end
55
-
56
- class CommentIncoming < Standard
57
- end
58
-
59
- class Custom < Standard
60
- string :template
61
-
62
- # TODO: Experimental
63
- hash :extra
64
-
65
- # TODO: Deprecate
66
- hash :data
67
- end
68
- end
69
-
70
- class Section < AbstractBuilder
71
- def initialize(json, page, template)
72
- super json, page
73
- @template = template
74
- end
75
-
76
- def header(options = {})
77
- json.header do
78
- page.vertical_content(options)
79
- end
80
- end
81
-
82
- def rows(options = {})
83
- block = options[:builder]
84
- json.rows do
85
- if (objects = options[:objects])
86
- objects.each_with_index do |object, index|
87
- block&.call @template, object, index
88
- end
89
- else
90
- block&.call @template
91
- end
92
- end
93
- end
94
-
95
- def footer(options = {})
96
- json.footer do
97
- page.vertical_content(options)
98
- end
99
- end
100
- end
101
-
102
- end
103
- end
104
- end
1
+ module Glib
2
+ module JsonUi
3
+ module ListBuilders
4
+ class Template < AbstractBuilder
5
+ def method_missing(m, *args)
6
+ add_element_to_array 'template', m, *args
7
+ end
8
+
9
+ class AbstractTemplate < JsonUiElement
10
+ menu :leftButtons
11
+ menu :rightButtons
12
+ menu :editButtons
13
+ menu :chips
14
+
15
+ # def editButtons(block)
16
+ # json.editButtons do
17
+ # block.call page.menu_builder
18
+ # end
19
+ # end
20
+
21
+ # def chips(block)
22
+ # json.chips do
23
+ # block.call page.menu_builder
24
+ # end
25
+ # end
26
+ end
27
+
28
+ class Standard < AbstractTemplate
29
+ string :id
30
+ string :title
31
+ string :subtitle
32
+ string :subsubtitle
33
+ string :imageUrl
34
+ action :onClick
35
+ action :onLongPress
36
+ icon :icon
37
+ bool :avatar
38
+ action :onReorder
39
+ string :paramNameForFormData
40
+ string :paramNameForNewIndex
41
+
42
+ # # NOTE: Experimental. Still deciding whether this needs to be a full blown panel or
43
+ # # an array of badges (with relevant properties, e.g. text, color, etc)
44
+ # views :accessoryViews
45
+ end
46
+
47
+ class Featured < Standard
48
+ end
49
+
50
+ class Thumbnail < Standard
51
+ end
52
+
53
+ class CommentOutgoing < Standard
54
+ end
55
+
56
+ class CommentIncoming < Standard
57
+ end
58
+
59
+ class Custom < Standard
60
+ string :template
61
+
62
+ # TODO: Experimental
63
+ hash :extra
64
+
65
+ # TODO: Deprecate
66
+ hash :data
67
+ end
68
+ end
69
+
70
+ class Section < AbstractBuilder
71
+ def initialize(json, page, template)
72
+ super json, page
73
+ @template = template
74
+ end
75
+
76
+ def header(options = {})
77
+ json.header do
78
+ page.vertical_content(options)
79
+ end
80
+ end
81
+
82
+ def rows(options = {})
83
+ block = options[:builder]
84
+ json.rows do
85
+ if (objects = options[:objects])
86
+ objects.each_with_index do |object, index|
87
+ block&.call @template, object, index
88
+ end
89
+ else
90
+ block&.call @template
91
+ end
92
+ end
93
+ end
94
+
95
+ def footer(options = {})
96
+ json.footer do
97
+ page.vertical_content(options)
98
+ end
99
+ end
100
+ end
101
+
102
+ end
103
+ end
104
+ end