glib-web 0.5.66 → 0.5.67

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 (181) hide show
  1. checksums.yaml +4 -4
  2. data/app/channels/glib/channel/is_typing_channel.rb +34 -28
  3. data/app/channels/glib/channel/online_channel.rb +36 -29
  4. data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
  5. data/app/controllers/concerns/glib/auth/policy.rb +148 -148
  6. data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
  7. data/app/controllers/concerns/glib/json/libs.rb +149 -149
  8. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
  9. data/app/controllers/concerns/glib/json/transformation.rb +11 -11
  10. data/app/controllers/concerns/glib/json/traversal.rb +92 -92
  11. data/app/controllers/concerns/glib/json/ui.rb +88 -88
  12. data/app/controllers/concerns/glib/json/validation.rb +13 -13
  13. data/app/controllers/glib/home_controller.rb +54 -54
  14. data/app/helpers/glib/app_feature_support_helper.rb +16 -16
  15. data/app/helpers/glib/dynamic_images_helper.rb +55 -55
  16. data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
  17. data/app/helpers/glib/enum_helper.rb +8 -8
  18. data/app/helpers/glib/forms_helper.rb +15 -15
  19. data/app/helpers/glib/json_ui/abstract_builder.rb +294 -294
  20. data/app/helpers/glib/json_ui/action_builder.rb +140 -140
  21. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  22. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  23. data/app/helpers/glib/json_ui/action_builder/panels.rb +14 -14
  24. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
  25. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
  26. data/app/helpers/glib/json_ui/action_builder/windows.rb +31 -31
  27. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  28. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  29. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  30. data/app/helpers/glib/json_ui/list_builders.rb +110 -110
  31. data/app/helpers/glib/json_ui/menu_builder.rb +94 -94
  32. data/app/helpers/glib/json_ui/page_helper.rb +221 -221
  33. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  34. data/app/helpers/glib/json_ui/split_builders.rb +32 -32
  35. data/app/helpers/glib/json_ui/styling_helper.rb +47 -47
  36. data/app/helpers/glib/json_ui/table_builders.rb +74 -74
  37. data/app/helpers/glib/json_ui/view_builder.rb +232 -232
  38. data/app/helpers/glib/json_ui/view_builder/banners.rb +26 -26
  39. data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
  40. data/app/helpers/glib/json_ui/view_builder/fields.rb +267 -263
  41. data/app/helpers/glib/json_ui/view_builder/panels.rb +251 -251
  42. data/app/helpers/glib/urls_helper.rb +12 -12
  43. data/app/models/glib/active_storage/attachment.rb +9 -9
  44. data/app/models/glib/active_storage/blob.rb +9 -9
  45. data/app/models/glib/application_record.rb +18 -18
  46. data/app/models/glib/dynamic_text_record.rb +9 -9
  47. data/app/models/glib/text.rb +95 -95
  48. data/app/policies/glib/application_policy.rb +161 -161
  49. data/app/validators/email_typo_validator.rb +38 -38
  50. data/app/validators/email_validator.rb +7 -7
  51. data/app/validators/url_validator.rb +20 -20
  52. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
  53. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  54. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  55. data/app/views/json_ui/garage/actions/_panels.json.jbuilder +18 -18
  56. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  57. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  58. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  59. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +24 -24
  60. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  61. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  62. data/app/views/json_ui/garage/actions/index.json.jbuilder +24 -24
  63. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +6 -6
  64. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  65. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  66. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
  67. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
  68. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +39 -39
  69. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +22 -22
  70. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  71. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +32 -32
  72. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +19 -19
  73. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  74. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +27 -27
  75. data/app/views/json_ui/garage/forms/index.json.jbuilder +116 -113
  76. data/app/views/json_ui/garage/forms/misc.json.jbuilder +57 -29
  77. data/app/views/json_ui/garage/forms/misc_two.json.jbuilder +61 -0
  78. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +39 -39
  79. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +79 -79
  80. data/app/views/json_ui/garage/forms/ratings.json.jbuilder +49 -49
  81. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  82. data/app/views/json_ui/garage/forms/selects.json.jbuilder +83 -83
  83. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +130 -130
  84. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +35 -35
  85. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  86. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +26 -26
  87. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  88. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  89. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +81 -81
  90. data/app/views/json_ui/garage/home/blank.json.jbuilder +10 -10
  91. data/app/views/json_ui/garage/home/index.json.jbuilder +36 -36
  92. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  93. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
  94. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  95. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  96. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +94 -94
  97. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +62 -62
  98. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  99. data/app/views/json_ui/garage/lists/index.json.jbuilder +32 -32
  100. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +34 -34
  101. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  102. data/app/views/json_ui/garage/notifications/action_cable.json.jbuilder +114 -113
  103. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  104. data/app/views/json_ui/garage/notifications/index.json.jbuilder +36 -36
  105. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  106. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  107. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  108. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  109. data/app/views/json_ui/garage/pages/index.json.jbuilder +62 -62
  110. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  111. data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +13 -13
  112. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  113. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  114. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  115. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +31 -31
  116. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  117. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  118. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
  119. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  120. data/app/views/json_ui/garage/panels/flow.json.jbuilder +49 -49
  121. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
  122. data/app/views/json_ui/garage/panels/index.json.jbuilder +132 -132
  123. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  124. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  125. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  126. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +55 -55
  127. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  128. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  129. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  130. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  131. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  132. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  133. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  134. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  135. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  136. data/app/views/json_ui/garage/tables/layout.json.jbuilder +40 -40
  137. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  138. data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
  139. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  140. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
  141. data/app/views/json_ui/garage/views/icon_names.json.jbuilder +1450 -1450
  142. data/app/views/json_ui/garage/views/icons.json.jbuilder +14 -14
  143. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  144. data/app/views/json_ui/garage/views/index.json.jbuilder +64 -64
  145. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  146. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  147. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  148. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  149. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  150. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  151. data/app/views/json_ui/garage/views/texts.json.jbuilder +44 -44
  152. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  153. data/config/routes.rb +7 -7
  154. data/lib/generators/glib/install_generator.rb +24 -24
  155. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  156. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  157. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  158. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  159. data/lib/generators/templates/database.yml +107 -107
  160. data/lib/generators/templates/dynamic_text.rb +2 -2
  161. data/lib/glib-web.rb +9 -9
  162. data/lib/glib/crypt/utils.rb +26 -26
  163. data/lib/glib/dynamic_text/config.rb +21 -21
  164. data/lib/glib/engine.rb +7 -7
  165. data/lib/glib/json_crawler.rb +11 -11
  166. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  167. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  168. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  169. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  170. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  171. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  172. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  173. data/lib/glib/json_crawler/coverage.rb +20 -20
  174. data/lib/glib/json_crawler/http.rb +120 -120
  175. data/lib/glib/json_crawler/router.rb +98 -98
  176. data/lib/glib/mailer_tester.rb +36 -36
  177. data/lib/glib/test_helpers.rb +52 -52
  178. data/lib/glib/value.rb +7 -7
  179. data/lib/glib/version.rb +5 -5
  180. data/lib/tasks/db.rake +95 -95
  181. metadata +2 -1
@@ -1,35 +1,35 @@
1
-
2
- page_index = params[:page].to_i
3
- next_page = {
4
- url: json_ui_garage_url(path: 'lists/autoload_as_needed', page: page_index + 1, section_only: 'v1'),
5
- autoload: 'asNeeded'
6
- }
7
-
8
- page = json_ui_page json
9
-
10
- # TODO: Cater
11
- # - for SEO: one URL for a standalone page and one URL for pagination only
12
- # - for generic approach, e.g. excluding nav_menu when there is no change
13
- if params[:section_only].present?
14
- sleep 1
15
-
16
- json.nextPage next_page if page_index < 3
17
- json.sections do
18
- json.child! do
19
- render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
20
- end
21
- end
22
- else
23
- json.title 'Lists'
24
-
25
- render "#{@path_prefix}/nav_menu", json: json, page: page
26
-
27
- page.list nextPage: next_page, firstSection: ->(section) do
28
- render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
29
- end, onScrollToBottom: ->(action) do
30
- action.snackbars_alert message: 'Scrolled to Bottom'
31
- end, onScrollToTop: ->(action) do
32
- action.snackbars_alert message: 'Scrolled to Top'
33
- end
34
-
35
- end
1
+
2
+ page_index = params[:page].to_i
3
+ next_page = {
4
+ url: json_ui_garage_url(path: 'lists/autoload_as_needed', page: page_index + 1, section_only: 'v1'),
5
+ autoload: 'asNeeded'
6
+ }
7
+
8
+ page = json_ui_page json
9
+
10
+ # TODO: Cater
11
+ # - for SEO: one URL for a standalone page and one URL for pagination only
12
+ # - for generic approach, e.g. excluding nav_menu when there is no change
13
+ if params[:section_only].present?
14
+ sleep 1
15
+
16
+ json.nextPage next_page if page_index < 3
17
+ json.sections do
18
+ json.child! do
19
+ render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
20
+ end
21
+ end
22
+ else
23
+ json.title 'Lists'
24
+
25
+ render "#{@path_prefix}/nav_menu", json: json, page: page
26
+
27
+ page.list nextPage: next_page, firstSection: ->(section) do
28
+ render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
29
+ end, onScrollToBottom: ->(action) do
30
+ action.snackbars_alert message: 'Scrolled to Bottom'
31
+ end, onScrollToTop: ->(action) do
32
+ action.snackbars_alert message: 'Scrolled to Top'
33
+ end
34
+
35
+ end
@@ -1,94 +1,94 @@
1
- json.title 'Lists'
2
-
3
- liked = params[:liked] == 'true'
4
-
5
- page = json_ui_page json
6
-
7
- render "#{@path_prefix}/nav_menu", json: json, page: page
8
-
9
- json.phoenixSocket({
10
- "socket" => {
11
- "endpoint" => "/socket/websocket",
12
- "params" => {
13
- vsn: '2.0.0',
14
- token: 'TOKEN'
15
- }
16
- },
17
- "topic" => "rooms",
18
- "events" => [],
19
- # "events" => ["new_link_added"],
20
- # "header" => {
21
- # "user_id" => 2,
22
- # "prev_item_id" => nil,
23
- # "last_item_id" => nil
24
- # }
25
- })
26
-
27
- list_ws = { topic: 'rooms', events: ['comments_updated'] }
28
- page.list phoenixSocket: list_ws, firstSection: ->(section) do
29
- section.header padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(header) do
30
- header.h3 text: 'Chat with John Doe'
31
- end
32
-
33
- section.rows builder: ->(template) do
34
- # template.thumbnail title: "windows/reload (timestamp: #{DateTime.current.to_i}) -- #{liked}", onClick: ->(action) do
35
- # action.windows_reload
36
- # end, onLongPress: ->(action) do
37
- # action.sheets_select message: "Context Menu (#{DateTime.current.to_i})", buttons: ->(menu) do
38
- # if liked
39
- # menu.button text: 'Cancel 👍', onClick: ->(subaction) do
40
- # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: false)
41
- # end
42
- # else
43
- # menu.button text: 'Give 👍', onClick: ->(subaction) do
44
- # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: true)
45
- # end
46
- # end
47
- # end
48
- # end
49
-
50
- template.commentOutgoing subtitle: 'Hey!', subsubtitle: l(10.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
51
- menu.button text: '😊 2', styleClass: 'info'
52
- end
53
-
54
- template.commentOutgoing subtitle: 'How are you?', subsubtitle: l(DateTime.current, format: :short)
55
-
56
- template.commentIncoming title: 'John Doe', subtitle: 'Very well', subsubtitle: l(7.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
57
- menu.button text: "👍 #{liked ? 2 : 1}"
58
- end, onLongPress: ->(action) do
59
- action.sheets_select message: 'Context Menu', buttons: ->(menu) do
60
- if liked
61
- menu.button text: 'Cancel 👍', onClick: ->(subaction) do
62
- subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: false)
63
- end
64
- else
65
- menu.button text: 'Give 👍', onClick: ->(subaction) do
66
- subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: true)
67
- end
68
- end
69
- end
70
- end
71
- end
72
- end
73
-
74
- page.footer padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(footer) do
75
- footer.panels_form width: 'matchParent', url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: glib_json_padding_body, paramNameForFormData: 'formData', onSubmit: ->(action) do
76
- json.action "ws/push"
77
- json.topic "rooms"
78
- json.event "create_comment"
79
- json.payload({
80
- "room_id": "30",
81
- "user_id": "2"
82
- })
83
-
84
- end, childViews: ->(form) do
85
- form.fields_text name: 'user[message]', width: 'matchParent', label: 'Message'
86
-
87
- form.panels_split width: 'matchParent', content: ->(split) do
88
- split.right childViews: ->(right) do
89
- right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
90
- end
91
- end
92
- end
93
-
94
- end
1
+ json.title 'Lists'
2
+
3
+ liked = params[:liked] == 'true'
4
+
5
+ page = json_ui_page json
6
+
7
+ render "#{@path_prefix}/nav_menu", json: json, page: page
8
+
9
+ json.phoenixSocket({
10
+ "socket" => {
11
+ "endpoint" => "/socket/websocket",
12
+ "params" => {
13
+ vsn: '2.0.0',
14
+ token: 'TOKEN'
15
+ }
16
+ },
17
+ "topic" => "rooms",
18
+ "events" => [],
19
+ # "events" => ["new_link_added"],
20
+ # "header" => {
21
+ # "user_id" => 2,
22
+ # "prev_item_id" => nil,
23
+ # "last_item_id" => nil
24
+ # }
25
+ })
26
+
27
+ list_ws = { topic: 'rooms', events: ['comments_updated'] }
28
+ page.list phoenixSocket: list_ws, firstSection: ->(section) do
29
+ section.header padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(header) do
30
+ header.h3 text: 'Chat with John Doe'
31
+ end
32
+
33
+ section.rows builder: ->(template) do
34
+ # template.thumbnail title: "windows/reload (timestamp: #{DateTime.current.to_i}) -- #{liked}", onClick: ->(action) do
35
+ # action.windows_reload
36
+ # end, onLongPress: ->(action) do
37
+ # action.sheets_select message: "Context Menu (#{DateTime.current.to_i})", buttons: ->(menu) do
38
+ # if liked
39
+ # menu.button text: 'Cancel 👍', onClick: ->(subaction) do
40
+ # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: false)
41
+ # end
42
+ # else
43
+ # menu.button text: 'Give 👍', onClick: ->(subaction) do
44
+ # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: true)
45
+ # end
46
+ # end
47
+ # end
48
+ # end
49
+
50
+ template.commentOutgoing subtitle: 'Hey!', subsubtitle: l(10.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
51
+ menu.button text: '😊 2', styleClass: 'info'
52
+ end
53
+
54
+ template.commentOutgoing subtitle: 'How are you?', subsubtitle: l(DateTime.current, format: :short)
55
+
56
+ template.commentIncoming title: 'John Doe', subtitle: 'Very well', subsubtitle: l(7.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
57
+ menu.button text: "👍 #{liked ? 2 : 1}"
58
+ end, onLongPress: ->(action) do
59
+ action.sheets_select message: 'Context Menu', buttons: ->(menu) do
60
+ if liked
61
+ menu.button text: 'Cancel 👍', onClick: ->(subaction) do
62
+ subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: false)
63
+ end
64
+ else
65
+ menu.button text: 'Give 👍', onClick: ->(subaction) do
66
+ subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: true)
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ page.footer padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(footer) do
75
+ footer.panels_form width: 'matchParent', url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: glib_json_padding_body, paramNameForFormData: 'formData', onSubmit: ->(action) do
76
+ json.action "ws/push"
77
+ json.topic "rooms"
78
+ json.event "create_comment"
79
+ json.payload({
80
+ "room_id": "30",
81
+ "user_id": "2"
82
+ })
83
+
84
+ end, childViews: ->(form) do
85
+ form.fields_text name: 'user[message]', width: 'matchParent', label: 'Message'
86
+
87
+ form.panels_split width: 'matchParent', content: ->(split) do
88
+ split.right childViews: ->(right) do
89
+ right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
90
+ end
91
+ end
92
+ end
93
+
94
+ end
@@ -1,62 +1,62 @@
1
- json.title 'Lists'
2
-
3
- page_index = params[:page].to_i
4
- if page_index > 2
5
- page_index = 2
6
- end
7
- page = json_ui_page json
8
- render "#{@path_prefix}/nav_menu", json: json, page: page
9
-
10
- page.list firstSection: ->(section) do
11
- section.rows builder: ->(template) do
12
- template.thumbnail \
13
- title: 'Click menu (web) or swipe left (Android/iOS)',
14
- subtitle: "Page index: #{page_index}",
15
- leftButtons: ->(menu) do
16
- menu.button styleClass: 'icon', icon: 'check_box', onClick: ->(subaction) do
17
- subaction.dialogs_alert message: 'Tick/untick'
18
- end
19
- end, rightButtons: ->(menu) do
20
- menu.button styleClass: 'icon', icon: 'share', onClick: ->(subaction) do
21
- subaction.dialogs_alert message: 'Share'
22
- end
23
- menu.button styleClass: 'icon', icon: 'open_in_new', onClick: ->(subaction) do
24
- subaction.dialogs_alert message: 'Open'
25
- end
26
- end, editButtons: ->(menu) do
27
- menu.button text: "Edit (ID: #{page_index})", onClick: ->(action) do
28
- action.dialogs_alert message: 'Perform Edit action'
29
- end
30
- menu.button text: 'Delete', onClick: ->(action) do
31
- action.dialogs_alert message: 'Perform Delete action'
32
- end
33
- end, onClick: ->(action) do
34
- action.windows_open url: json_ui_garage_url(path: 'lists/edit_actions', page: page_index + 1)
35
- end
36
-
37
- template.thumbnail title: 'Long press to get an alert', onLongPress: ->(action) do
38
- action.dialogs_alert message: 'This is an alert'
39
- end
40
-
41
- template.thumbnail title: 'Long press to see menu', onLongPress: ->(action) do
42
- action.sheets_select message: 'Context Menu', buttons: ->(menu) do
43
- menu.button icon: 'edit', text: 'Edit', onClick: ->(subaction) do
44
- subaction.dialogs_alert message: 'Perform action'
45
- end
46
- menu.button icon: 'delete', text: 'Delete', onClick: ->(subaction) do
47
- subaction.dialogs_alert message: 'Perform action'
48
- end
49
- end
50
- end
51
-
52
- # template.thumbnail title: 'Long press to see menu', contextButtons: ->(menu) do
53
- # menu.button text: 'Edit', onClick: ->(action) do
54
- # action.dialogs_alert message: 'Perform action'
55
- # end
56
- # menu.button text: 'Delete', onClick: ->(action) do
57
- # action.dialogs_alert message: 'Perform action'
58
- # end
59
- # end
60
- end
61
-
62
- end
1
+ json.title 'Lists'
2
+
3
+ page_index = params[:page].to_i
4
+ if page_index > 2
5
+ page_index = 2
6
+ end
7
+ page = json_ui_page json
8
+ render "#{@path_prefix}/nav_menu", json: json, page: page
9
+
10
+ page.list firstSection: ->(section) do
11
+ section.rows builder: ->(template) do
12
+ template.thumbnail \
13
+ title: 'Click menu (web) or swipe left (Android/iOS)',
14
+ subtitle: "Page index: #{page_index}",
15
+ leftButtons: ->(menu) do
16
+ menu.button styleClass: 'icon', icon: 'check_box', onClick: ->(subaction) do
17
+ subaction.dialogs_alert message: 'Tick/untick'
18
+ end
19
+ end, rightButtons: ->(menu) do
20
+ menu.button styleClass: 'icon', icon: 'share', onClick: ->(subaction) do
21
+ subaction.dialogs_alert message: 'Share'
22
+ end
23
+ menu.button styleClass: 'icon', icon: 'open_in_new', onClick: ->(subaction) do
24
+ subaction.dialogs_alert message: 'Open'
25
+ end
26
+ end, editButtons: ->(menu) do
27
+ menu.button text: "Edit (ID: #{page_index})", onClick: ->(action) do
28
+ action.dialogs_alert message: 'Perform Edit action'
29
+ end
30
+ menu.button text: 'Delete', onClick: ->(action) do
31
+ action.dialogs_alert message: 'Perform Delete action'
32
+ end
33
+ end, onClick: ->(action) do
34
+ action.windows_open url: json_ui_garage_url(path: 'lists/edit_actions', page: page_index + 1)
35
+ end
36
+
37
+ template.thumbnail title: 'Long press to get an alert', onLongPress: ->(action) do
38
+ action.dialogs_alert message: 'This is an alert'
39
+ end
40
+
41
+ template.thumbnail title: 'Long press to see menu', onLongPress: ->(action) do
42
+ action.sheets_select message: 'Context Menu', buttons: ->(menu) do
43
+ menu.button icon: 'edit', text: 'Edit', onClick: ->(subaction) do
44
+ subaction.dialogs_alert message: 'Perform action'
45
+ end
46
+ menu.button icon: 'delete', text: 'Delete', onClick: ->(subaction) do
47
+ subaction.dialogs_alert message: 'Perform action'
48
+ end
49
+ end
50
+ end
51
+
52
+ # template.thumbnail title: 'Long press to see menu', contextButtons: ->(menu) do
53
+ # menu.button text: 'Edit', onClick: ->(action) do
54
+ # action.dialogs_alert message: 'Perform action'
55
+ # end
56
+ # menu.button text: 'Delete', onClick: ->(action) do
57
+ # action.dialogs_alert message: 'Perform action'
58
+ # end
59
+ # end
60
+ end
61
+
62
+ end
@@ -1,12 +1,12 @@
1
- json.title 'Lists'
2
-
3
- page = json_ui_page json
4
- render "#{@path_prefix}/nav_menu", json: json, page: page
5
-
6
- page.body childViews: ->(body) do
7
- body.fab icon: 'add', onClick: ->(action) { action.dialogs_alert message: 'Perform action' }
8
-
9
- body.panels_list width: 'matchParent', firstSection: ->(section) do
10
- render 'json_ui/garage/lists/autoload_section', page: page, page_index: 0
11
- end
12
- end
1
+ json.title 'Lists'
2
+
3
+ page = json_ui_page json
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.body childViews: ->(body) do
7
+ body.fab icon: 'add', onClick: ->(action) { action.dialogs_alert message: 'Perform action' }
8
+
9
+ body.panels_list width: 'matchParent', firstSection: ->(section) do
10
+ render 'json_ui/garage/lists/autoload_section', page: page, page_index: 0
11
+ end
12
+ end
@@ -1,32 +1,32 @@
1
- json.title 'Lists'
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 firstSection: ->(section) do
7
- section.rows builder: ->(template) do
8
- template.thumbnail icon: 'list', title: 'Templating', onClick: ->(action) do
9
- action.windows_open url: json_ui_garage_url(path: 'lists/templating')
10
- end
11
- template.thumbnail title: 'Action Buttons', onClick: ->(action) do
12
- action.windows_open url: json_ui_garage_url(path: 'lists/edit_actions')
13
- end
14
- template.thumbnail title: 'FAB (Floating Action Button)', onClick: ->(action) do
15
- action.windows_open url: json_ui_garage_url(path: 'lists/fab')
16
- end
17
- template.thumbnail title: 'Chat UI', onClick: ->(action) do
18
- action.windows_open url: json_ui_garage_url(path: 'lists/chat_ui')
19
- end
20
- template.thumbnail title: 'Autoload as Needed', onClick: ->(action) do
21
- action.windows_open url: json_ui_garage_url(path: 'lists/autoload_as_needed')
22
- end
23
- template.thumbnail title: 'Autoload All', onClick: ->(action) do
24
- action.windows_open url: json_ui_garage_url(path: 'lists/autoload_all')
25
- end
26
- template.thumbnail title: 'Reordering', onClick: ->(action) do
27
- action.windows_open url: json_ui_garage_url(path: 'lists/reordering')
28
- end
29
- end
30
-
31
- end
32
- end
1
+ json.title 'Lists'
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 firstSection: ->(section) do
7
+ section.rows builder: ->(template) do
8
+ template.thumbnail icon: 'list', title: 'Templating', onClick: ->(action) do
9
+ action.windows_open url: json_ui_garage_url(path: 'lists/templating')
10
+ end
11
+ template.thumbnail title: 'Action Buttons', onClick: ->(action) do
12
+ action.windows_open url: json_ui_garage_url(path: 'lists/edit_actions')
13
+ end
14
+ template.thumbnail title: 'FAB (Floating Action Button)', onClick: ->(action) do
15
+ action.windows_open url: json_ui_garage_url(path: 'lists/fab')
16
+ end
17
+ template.thumbnail title: 'Chat UI', onClick: ->(action) do
18
+ action.windows_open url: json_ui_garage_url(path: 'lists/chat_ui')
19
+ end
20
+ template.thumbnail title: 'Autoload as Needed', onClick: ->(action) do
21
+ action.windows_open url: json_ui_garage_url(path: 'lists/autoload_as_needed')
22
+ end
23
+ template.thumbnail title: 'Autoload All', onClick: ->(action) do
24
+ action.windows_open url: json_ui_garage_url(path: 'lists/autoload_all')
25
+ end
26
+ template.thumbnail title: 'Reordering', onClick: ->(action) do
27
+ action.windows_open url: json_ui_garage_url(path: 'lists/reordering')
28
+ end
29
+ end
30
+
31
+ end
32
+ end