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,32 +1,32 @@
1
-
2
- page_index = params[:page].to_i
3
- next_page = {
4
- url: json_ui_garage_url(path: 'lists/autoload_all', page: page_index + 1, section_only: 'v1'),
5
- autoload: 'all'
6
- }
7
-
8
- page = json_ui_page json
9
-
10
- if params[:section_only].present?
11
- sleep 1
12
-
13
- json.nextPage next_page if page_index < 3
14
- json.sections do
15
- json.child! do
16
- render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
17
- end
18
- end
19
- else
20
- json.title 'Lists'
21
-
22
- render "#{@path_prefix}/nav_menu", json: json, page: page
23
-
24
- page.list nextPage: next_page, firstSection: ->(section) do
25
- render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
26
- end, onScrollToBottom: ->(action) do
27
- action.snackbars_alert message: 'Scrolled to Bottom'
28
- end, onScrollToTop: ->(action) do
29
- action.snackbars_alert message: 'Scrolled to Top'
30
- end
31
-
32
- end
1
+
2
+ page_index = params[:page].to_i
3
+ next_page = {
4
+ url: json_ui_garage_url(path: 'lists/autoload_all', page: page_index + 1, section_only: 'v1'),
5
+ autoload: 'all'
6
+ }
7
+
8
+ page = json_ui_page json
9
+
10
+ if params[:section_only].present?
11
+ sleep 1
12
+
13
+ json.nextPage next_page if page_index < 3
14
+ json.sections do
15
+ json.child! do
16
+ render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
17
+ end
18
+ end
19
+ else
20
+ json.title 'Lists'
21
+
22
+ render "#{@path_prefix}/nav_menu", json: json, page: page
23
+
24
+ page.list nextPage: next_page, firstSection: ->(section) do
25
+ render 'json_ui/garage/lists/autoload_section', page: page, page_index: page_index
26
+ end, onScrollToBottom: ->(action) do
27
+ action.snackbars_alert message: 'Scrolled to Bottom'
28
+ end, onScrollToTop: ->(action) do
29
+ action.snackbars_alert message: 'Scrolled to Top'
30
+ end
31
+
32
+ end
@@ -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,93 +1,93 @@
1
- json.title 'Lists'
2
-
3
- liked = params[:liked] == 'true'
4
-
5
- page = json_ui_page json
6
- render "#{@path_prefix}/nav_menu", json: json, page: page
7
-
8
- json.phoenixSocket({
9
- "socket" => {
10
- "endpoint" => "/socket/websocket",
11
- "params" => {
12
- vsn: '2.0.0',
13
- token: 'TOKEN'
14
- }
15
- },
16
- "topic" => "rooms",
17
- "events" => [],
18
- # "events" => ["new_link_added"],
19
- # "header" => {
20
- # "user_id" => 2,
21
- # "prev_item_id" => nil,
22
- # "last_item_id" => nil
23
- # }
24
- })
25
-
26
- list_ws = { topic: 'rooms', events: ['comments_updated'] }
27
- page.list phoenixSocket: list_ws, firstSection: ->(section) do
28
- section.header padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(header) do
29
- header.h3 text: 'Chat with John Doe'
30
- end
31
-
32
- section.rows builder: ->(template) do
33
- # template.thumbnail title: "windows/reload (timestamp: #{DateTime.current.to_i}) -- #{liked}", onClick: ->(action) do
34
- # action.windows_reload
35
- # end, onLongPress: ->(action) do
36
- # action.sheets_select message: "Context Menu (#{DateTime.current.to_i})", buttons: ->(menu) do
37
- # if liked
38
- # menu.button text: 'Cancel 👍', onClick: ->(subaction) do
39
- # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: false)
40
- # end
41
- # else
42
- # menu.button text: 'Give 👍', onClick: ->(subaction) do
43
- # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: true)
44
- # end
45
- # end
46
- # end
47
- # end
48
-
49
- template.commentOutgoing subtitle: 'Hey!', subsubtitle: l(10.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
50
- menu.button text: '😊 2', styleClass: 'info'
51
- end
52
-
53
- template.commentOutgoing subtitle: 'How are you?', subsubtitle: l(DateTime.current, format: :short)
54
-
55
- template.commentIncoming title: 'John Doe', subtitle: 'Very well', subsubtitle: l(7.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
56
- menu.button text: "👍 #{liked ? 2 : 1}"
57
- end, onLongPress: ->(action) do
58
- action.sheets_select message: 'Context Menu', buttons: ->(menu) do
59
- if liked
60
- menu.button text: 'Cancel 👍', onClick: ->(subaction) do
61
- subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: false)
62
- end
63
- else
64
- menu.button text: 'Give 👍', onClick: ->(subaction) do
65
- subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: true)
66
- end
67
- end
68
- end
69
- end
70
- end
71
- end
72
-
73
- page.footer padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(footer) do
74
- 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
75
- json.action "ws/push"
76
- json.topic "rooms"
77
- json.event "create_comment"
78
- json.payload({
79
- "room_id": "30",
80
- "user_id": "2"
81
- })
82
-
83
- end, childViews: ->(form) do
84
- form.fields_text name: 'user[message]', width: 'matchParent', label: 'Message'
85
-
86
- form.panels_split width: 'matchParent', content: ->(split) do
87
- split.right childViews: ->(right) do
88
- right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
89
- end
90
- end
91
- end
92
-
93
- end
1
+ json.title 'Lists'
2
+
3
+ liked = params[:liked] == 'true'
4
+
5
+ page = json_ui_page json
6
+ render "#{@path_prefix}/nav_menu", json: json, page: page
7
+
8
+ json.phoenixSocket({
9
+ "socket" => {
10
+ "endpoint" => "/socket/websocket",
11
+ "params" => {
12
+ vsn: '2.0.0',
13
+ token: 'TOKEN'
14
+ }
15
+ },
16
+ "topic" => "rooms",
17
+ "events" => [],
18
+ # "events" => ["new_link_added"],
19
+ # "header" => {
20
+ # "user_id" => 2,
21
+ # "prev_item_id" => nil,
22
+ # "last_item_id" => nil
23
+ # }
24
+ })
25
+
26
+ list_ws = { topic: 'rooms', events: ['comments_updated'] }
27
+ page.list phoenixSocket: list_ws, firstSection: ->(section) do
28
+ section.header padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(header) do
29
+ header.h3 text: 'Chat with John Doe'
30
+ end
31
+
32
+ section.rows builder: ->(template) do
33
+ # template.thumbnail title: "windows/reload (timestamp: #{DateTime.current.to_i}) -- #{liked}", onClick: ->(action) do
34
+ # action.windows_reload
35
+ # end, onLongPress: ->(action) do
36
+ # action.sheets_select message: "Context Menu (#{DateTime.current.to_i})", buttons: ->(menu) do
37
+ # if liked
38
+ # menu.button text: 'Cancel 👍', onClick: ->(subaction) do
39
+ # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: false)
40
+ # end
41
+ # else
42
+ # menu.button text: 'Give 👍', onClick: ->(subaction) do
43
+ # subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat', liked: true)
44
+ # end
45
+ # end
46
+ # end
47
+ # end
48
+
49
+ template.commentOutgoing subtitle: 'Hey!', subsubtitle: l(10.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
50
+ menu.button text: '😊 2', styleClass: 'info'
51
+ end
52
+
53
+ template.commentOutgoing subtitle: 'How are you?', subsubtitle: l(DateTime.current, format: :short)
54
+
55
+ template.commentIncoming title: 'John Doe', subtitle: 'Very well', subsubtitle: l(7.minutes.ago, format: :short), imageUrl: glib_json_image_standard_url, chips: ->(menu) do
56
+ menu.button text: "👍 #{liked ? 2 : 1}"
57
+ end, onLongPress: ->(action) do
58
+ action.sheets_select message: 'Context Menu', buttons: ->(menu) do
59
+ if liked
60
+ menu.button text: 'Cancel 👍', onClick: ->(subaction) do
61
+ subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: false)
62
+ end
63
+ else
64
+ menu.button text: 'Give 👍', onClick: ->(subaction) do
65
+ subaction.windows_reload url: json_ui_garage_url(path: 'lists/chat_ui', liked: true)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ page.footer padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(footer) do
74
+ 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
75
+ json.action "ws/push"
76
+ json.topic "rooms"
77
+ json.event "create_comment"
78
+ json.payload({
79
+ "room_id": "30",
80
+ "user_id": "2"
81
+ })
82
+
83
+ end, childViews: ->(form) do
84
+ form.fields_text name: 'user[message]', width: 'matchParent', label: 'Message'
85
+
86
+ form.panels_split width: 'matchParent', content: ->(split) do
87
+ split.right childViews: ->(right) do
88
+ right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
89
+ end
90
+ end
91
+ end
92
+
93
+ end
@@ -1,54 +1,54 @@
1
- json.title 'Lists'
2
-
3
- json_ui_page json do |page|
4
- render "#{@path_prefix}/nav_menu", json: json, page: page
5
-
6
- page.list firstSection: ->(section) do
7
- section.rows builder: ->(template) do
8
- template.thumbnail title: 'Click menu (web) or swipe left (Android/iOS)', leftButtons: ->(menu) do
9
- menu.button styleClass: 'icon', icon: 'check_box', onClick: ->(subaction) do
10
- subaction.dialogs_alert message: 'Tick/untick'
11
- end
12
- end, rightButtons: ->(menu) do
13
- menu.button styleClass: 'icon', icon: 'share', onClick: ->(subaction) do
14
- subaction.dialogs_alert message: 'Share'
15
- end
16
- menu.button styleClass: 'icon', icon: 'open_in_new', onClick: ->(subaction) do
17
- subaction.dialogs_alert message: 'Open'
18
- end
19
- end, editButtons: ->(menu) do
20
- menu.button text: 'Edit', onClick: ->(action) do
21
- action.dialogs_alert message: 'Perform action'
22
- end
23
- menu.button text: 'Delete', onClick: ->(action) do
24
- action.dialogs_alert message: 'Perform action'
25
- end
26
- end
27
-
28
- template.thumbnail title: 'Long press to get an alert', onLongPress: ->(action) do
29
- action.dialogs_alert message: 'This is an alert'
30
- end
31
-
32
- template.thumbnail title: 'Long press to see menu', onLongPress: ->(action) do
33
- action.sheets_select message: 'Context Menu', buttons: ->(menu) do
34
- menu.button icon: 'edit', text: 'Edit', onClick: ->(subaction) do
35
- subaction.dialogs_alert message: 'Perform action'
36
- end
37
- menu.button icon: 'delete', text: 'Delete', onClick: ->(subaction) do
38
- subaction.dialogs_alert message: 'Perform action'
39
- end
40
- end
41
- end
42
-
43
- # template.thumbnail title: 'Long press to see menu', contextButtons: ->(menu) do
44
- # menu.button text: 'Edit', onClick: ->(action) do
45
- # action.dialogs_alert message: 'Perform action'
46
- # end
47
- # menu.button text: 'Delete', onClick: ->(action) do
48
- # action.dialogs_alert message: 'Perform action'
49
- # end
50
- # end
51
- end
52
-
53
- end
54
- end
1
+ json.title 'Lists'
2
+
3
+ json_ui_page json do |page|
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.list firstSection: ->(section) do
7
+ section.rows builder: ->(template) do
8
+ template.thumbnail title: 'Click menu (web) or swipe left (Android/iOS)', leftButtons: ->(menu) do
9
+ menu.button styleClass: 'icon', icon: 'check_box', onClick: ->(subaction) do
10
+ subaction.dialogs_alert message: 'Tick/untick'
11
+ end
12
+ end, rightButtons: ->(menu) do
13
+ menu.button styleClass: 'icon', icon: 'share', onClick: ->(subaction) do
14
+ subaction.dialogs_alert message: 'Share'
15
+ end
16
+ menu.button styleClass: 'icon', icon: 'open_in_new', onClick: ->(subaction) do
17
+ subaction.dialogs_alert message: 'Open'
18
+ end
19
+ end, editButtons: ->(menu) do
20
+ menu.button text: 'Edit', onClick: ->(action) do
21
+ action.dialogs_alert message: 'Perform action'
22
+ end
23
+ menu.button text: 'Delete', onClick: ->(action) do
24
+ action.dialogs_alert message: 'Perform action'
25
+ end
26
+ end
27
+
28
+ template.thumbnail title: 'Long press to get an alert', onLongPress: ->(action) do
29
+ action.dialogs_alert message: 'This is an alert'
30
+ end
31
+
32
+ template.thumbnail title: 'Long press to see menu', onLongPress: ->(action) do
33
+ action.sheets_select message: 'Context Menu', buttons: ->(menu) do
34
+ menu.button icon: 'edit', text: 'Edit', onClick: ->(subaction) do
35
+ subaction.dialogs_alert message: 'Perform action'
36
+ end
37
+ menu.button icon: 'delete', text: 'Delete', onClick: ->(subaction) do
38
+ subaction.dialogs_alert message: 'Perform action'
39
+ end
40
+ end
41
+ end
42
+
43
+ # template.thumbnail title: 'Long press to see menu', contextButtons: ->(menu) do
44
+ # menu.button text: 'Edit', onClick: ->(action) do
45
+ # action.dialogs_alert message: 'Perform action'
46
+ # end
47
+ # menu.button text: 'Delete', onClick: ->(action) do
48
+ # action.dialogs_alert message: 'Perform action'
49
+ # end
50
+ # end
51
+ end
52
+
53
+ end
54
+ 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