glib-web 0.5.52 → 0.5.53

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